Issue 125529
Summary Inconsistent section-alignment values in RuntimeDyld
Labels new issue
Assignees
Reporter JohnReppy
    ## Summary

The alignment values given for sections as arguments to `RTDyldMemoryManager::reserveAllocationSpace` are smaller than the values supplied when calling `RTDyldMemoryManager::allocateDataSection`.  This inconsistency means that the amount of reserved space may not be sufficient for the later allocations.

## Details

This bug is in LLVM 18.1.8.  I am cross compiling from x86_64 to aarch64 on macOS (so the object-file format is MachO).  Our version of LLVM is slightly modified to support a specialized calling convention, but is otherwise a stock installation.

I added debug output to `RuntimeDyld.cpp` where these functions are called and get the following output:

```console
# RuntimeDyldImpl::loadObjectImpl: CodeAlign = 4; RODataAlign = 1; RWDataAlign = 1
# RuntimeDyldImpl::emitSection: Name = __text; Alignment = 8
# RuntimeDyldImpl::emitSection: Name = __const; Alignment = 8
```

I believe that the issue is related to the fact that different algorithms are used to compute the alignment in the two situations. Specifically, the `allocateDataSection` method bumps up the alignment by the stub alignment (which is always 8 bytes for Mach).

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to