Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
I'm writing Higher Half kernel. And I have loading problems with it. As I thought, problem was with VMA=3GiB, but...
When I changed my linker script for linking with VMA=LMA=1MiB, GRUB didn't change it's position about my kernel.
Damned --build-id option, which adds .note.(etc) section! Yes, I've deleted it by objdomp, but NOTE program header was still in file. Then I've decided to try to discard fucking --build-id section during link time. After linking I've got only 2 LOAD-type program headers, no any NOTE.
And now GRUB loading my kernel in both, lower- and higher-half configurations!
If smb. in future will have the same problem, just add the following to your linker script to SECTIONs: