Nix Cross Compiling | 580 Members | |
| 127 Servers |
| Sender | Message | Time |
|---|---|---|
| 21 Apr 2025 | ||
ltrans suggests these are LTO builds. | 21:30:03 | |
Do you have a reproducer? Chances are ld did not have a correct linker plugin present. | 21:30:23 | |
* Chances are ld did not have a correct linker plugin present. | 21:30:46 | |
| Disabling LTO results in less errors. But the build also fails earlier in the build process.
| 21:41:58 | |
| * Disabling LTO results in less errors. But the build also fails earlier in the build process.
| 21:46:00 | |
| * Disabling LTO removes the references to ltrans, but the same errors result.
| 21:46:47 | |
| 22 Apr 2025 | ||
Aha. Can you have a look what relocation is that? arm-none-eabi-objdump -dr should have an entry around .text.main+0x4e | 04:56:34 | |
| 13:20:19 | |
| Redacted or Malformed Event | 13:20:54 | |
*
| 13:22:31 | |
i think i figured out a possible cause. your code might be defining memset in assembly, but did not specify the symbol type as a function. therefore, the linker is refusing to emit a call to it because some paranoia about mixing arm and thumb functions. | 13:51:19 | |
if that's the case, you need to use .type memset, %function in your assembly code, and possibly all other functions as well | 13:51:42 | |
| this is a new check added in binutils 2.44 https://github.com/bminor/binutils-gdb/commit/31ed3a9d691493486f6e32357d89a55229dbdc0a#diff-9db1c8e03c72939d28438bba610afca27de21c37dda3d09639a8b531a5610902R10508 | 13:55:20 | |
| this should reproduce the "issue"
| 13:58:21 | |
| mostly unrelatedly, but the worst part about trying to debug this issue is element defaulted to not line wrapping code | 14:04:10 | |
| That's interesting. I do not define them in asm, I just use the newlib(-nano) provided ones. I just checked and it seems they do use the correct type for their asm defined functions. | 14:17:37 | |
In reply to @rosssmyth:matrix.orgare you using pkgsCross.arm-embedded? in that case the nanolib is compiled for arm and would not work for armv6-m | 14:28:08 | |
| you might need to write your own `crossSystem` while importing nixpkgs | 14:36:35 | |
| I tried that well earlier and it did not work with the same error | 20:52:34 | |
| * I tried that as well earlier and it did not work with the same error | 20:52:40 | |
I believe I have found the issue. While narrowing down to a minimal reproducer, it seems that passing -mthumb -mcpu=cortex-m0 -march=armv6-m with the cross-file, which should just be redundant with the armv6m toolchain, somehow messes up linking. Removing the cross file results in it compiling with the armv6m toolchain. But if the arm-embedded toolchain isn't thumb compatible, then what needs to be done to get multilib working? | 22:38:59 | |
| Cause an embedded toolchain that only works for a specific architecture is kind of silly | 22:39:40 | |
| Especially if it doesn't support thumb. And I would prefer not to spend 30 minutes building GCC in github actions every time CI runs | 22:40:15 | |
| For anyone curious, here's a reproducer https://github.com/RossSmyth/armRepro | 22:50:34 | |
| With a patch that can be applied that should fix it | 22:50:50 | |
| 23 Apr 2025 | ||
In reply to @rosssmyth:matrix.orgunfortunately, this is how nixpkgs gcc works | 00:02:52 | |
| the doesn't support thumb part shouldn't be happening though, that one i should take a look | 00:13:32 | |
... are you sure pkgsCross.arm-embedded.stdenv.cc ever worked for armv6-m? | 01:04:52 | |
| i'm throwing in the towel for now i have no idea how the arm embedded stuff works | 01:13:03 | |
does -march=armv6-m and -mcpu=cortex-m0 even work? | 01:41:18 | |