Page MenuHomeFreeBSD

Align .data segment with DATA_SEGMENT_ALIGN(0x1000, 0x1000) instead ofALIGN(0x1000) + (. & (0x1000 - 1)).
AbandonedPublic

Authored by ray on Sep 21 2019, 9:09 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Feb 9, 6:49 AM
Unknown Object (File)
Jan 4 2025, 2:59 AM
Unknown Object (File)
Jan 2 2025, 12:22 PM
Unknown Object (File)
Dec 30 2024, 9:22 AM
Unknown Object (File)
Dec 30 2024, 7:18 AM
Unknown Object (File)
Dec 16 2024, 5:39 PM
Unknown Object (File)
Oct 14 2024, 8:41 PM
Unknown Object (File)
Oct 14 2024, 8:09 PM
Subscribers

Details

Reviewers
None
Group Reviewers
ARM
Summary

Seems due some bug in llvm linker 'ALIGN(0x1000) + (. & (0x1000 - 1))'
trick produce kernel with wrong alignment:
[28] .data PROGBITS c0753d00 752d00 06f1d8 00 WA 0 0 64
That breaks boot on early stage with loaders unaware of ELF format.
In my case, kernel can't mach FDT methods on init of OFW.
DATA_SEGMENT_ALIGN special attribute that make job right:
[28] .data PROGBITS c0753000 753000 06f1d8 00 WA 0 0 64

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 26606
Build 24985: arc lint + arc unit

Event Timeline

ray retitled this revision from Align .data segment with DATA_SEGMENT_ALIGN(0x1000, 0x1000) instead of ALIGN(0x1000) + (. & (0x1000 - 1)). to Align .data segment with DATA_SEGMENT_ALIGN(0x1000, 0x1000) instead ofALIGN(0x1000) + (. & (0x1000 - 1))..Sep 21 2019, 9:10 PM
ray added a reviewer: ARM.

It is wrong way to fix elfcopy bug.
Thanks to @strejda for pointing that.