Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

checkabi fails on 32-bit architecture #11345

Closed
aerusso opened this issue Dec 15, 2020 · 5 comments · Fixed by #13104
Closed

checkabi fails on 32-bit architecture #11345

aerusso opened this issue Dec 15, 2020 · 5 comments · Fixed by #13104
Labels
Bot: Not Stale Override for the stale bot Type: Building Indicates an issue related to building binaries

Comments

@aerusso
Copy link
Contributor

aerusso commented Dec 15, 2020

System information

Type Version/Name
Distribution Name Debian (but applies to all)
Distribution Version sid
Linux Kernel 5.9
Architecture i386
ZFS Version 2.0.0
SPL Version NA

Describe the problem you're observing

Running make checkabi fails because the bit width has changed, and libabigail complains. See this Debian build failure log around line 1730.

Describe how to reproduce the problem

Build the source, and then run make checkabi on a 32-bit architecture.

Include any warning/errors/backtraces from the system logs

Here's an except from that Debian build failure log around line 1730:

ELF architecture changed
Functions changes summary: 0 Removed, 219 Changed (6 filtered out), 0 Added functions
Variables changes summary: 0 Removed, 7 Changed, 0 Added variables
architecture changed from 'elf-amd-x86_64' to 'elf-intel-80386'
219 functions with some indirect sub-type change:
  [C] 'function void dump_nvlist(nvlist_t*, int)' at libnvpair.c:794:1 has some indirect sub-type changes:
    parameter 1 of type 'nvlist_t*' has sub-type changes:
      in pointed to type 'typedef nvlist_t' at nvpair.h:91:1:
        underlying type 'struct nvlist' at nvpair.h:85:1 changed:
          type size hasn't changed
          1 data member change:
            type of 'uint64_t nvlist::nvl_priv' changed:
              underlying type 'typedef __uint64_t' at types.h:45:1 changed:
                underlying type 'unsigned long int' changed:
                  type name changed from 'unsigned long int' to 'long long unsigned int'
                  type size hasn't changed
    address size of function changed from 64 bits to 32 bits
  [C] 'function void fnvlist_add_boolean(nvlist_t*, const char*)' at fnvpair.c:131:1 has some indirect sub-type changes:
    address size of function changed from 64 bits to 32 bits
  [C] 'function void fnvlist_add_boolean_array(nvlist_t*, const char*, boolean_t*, uint_t)' at fnvpair.c:215:1 has some indirect sub-type changes:

Other thoughts

Should we just ship a 32-bit ABI as well? We obviously don't expect ABI compatibility between architectures.

@aerusso aerusso added Status: Triage Needed New issue which needs to be triaged Type: Defect Incorrect behavior (e.g. crash, hang) labels Dec 15, 2020
@behlendorf behlendorf removed the Status: Triage Needed New issue which needs to be triaged label Dec 15, 2020
@behlendorf
Copy link
Contributor

Good question. Now that you mention it there's probably a decent chance it will fail on other 64-bit architectures as well (arm64, ppc64, etc). Including an ABI file for each of these feels a bit burdensome when we're primarily attempting to catch accidental ABI changes which would very likely effect all of the architectures. Perhaps instead of adding another ABI file we could update the make checkabi target to only run on x86_64 and add a comment with the justification above.

@behlendorf behlendorf added Type: Building Indicates an issue related to building binaries and removed Type: Defect Incorrect behavior (e.g. crash, hang) labels Dec 15, 2020
@cdluminate
Copy link
Contributor

It's a good idea to noop make checkabi on non-amd64 architectures.

@stale
Copy link

stale bot commented Dec 16, 2021

This issue has been automatically marked as "stale" because it has not had any activity for a while. It will be closed in 90 days if no further activity occurs. Thank you for your contributions.

@stale stale bot added the Status: Stale No recent activity for issue label Dec 16, 2021
@behlendorf behlendorf added Bot: Not Stale Override for the stale bot and removed Status: Stale No recent activity for issue labels Dec 16, 2021
@behlendorf
Copy link
Contributor

This is still the case, since this is expected not to work what we should probably do is simply disable the make checkabi target on non-amd64 architectures.

@szubersk
Copy link
Contributor

This is still the case, since this is expected not to work what we should probably do is simply disable the make checkabi target on non-amd64 architectures.

@behlendorf @aerusso @gmelikov
How about taking a shot at disabling non-64-bit architectures to check what the feedback from users is? It might turn out that there might be no size discrepancies between same-word-size architectures. This issue is about specifically C types having different sizes because of the word size.
Just an idea.

behlendorf pushed a commit that referenced this issue Feb 16, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes #11345
Closes #13104
nicman23 pushed a commit to nicman23/zfs that referenced this issue Aug 22, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes openzfs#11345
Closes openzfs#13104
nicman23 pushed a commit to nicman23/zfs that referenced this issue Aug 22, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes openzfs#11345
Closes openzfs#13104
andrewc12 pushed a commit to andrewc12/openzfs that referenced this issue Aug 30, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes openzfs#11345
Closes openzfs#13104
lundman pushed a commit to openzfsonwindows/openzfs that referenced this issue Sep 1, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes openzfs#11345
Closes openzfs#13104
andrewc12 pushed a commit to andrewc12/openzfs that referenced this issue Sep 23, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes openzfs#11345
Closes openzfs#13104
andrewc12 pushed a commit to andrewc12/openzfs that referenced this issue Sep 23, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes openzfs#11345
Closes openzfs#13104
andrewc12 pushed a commit to andrewc12/openzfs that referenced this issue Sep 23, 2022
The stored ABI files are for the x86_64 architecture.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes openzfs#11345
Closes openzfs#13104
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bot: Not Stale Override for the stale bot Type: Building Indicates an issue related to building binaries
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants