Messages in this thread | | | Date | Tue, 22 Jan 2019 16:08:00 +0300 | From | "Kirill A. Shutemov" <> | Subject | Re: question about head_64.S |
| |
On Tue, Jan 22, 2019 at 03:31:25PM +0800, Cao jin wrote: > Hi, Kirll, > > On 1/15/19 7:45 PM, Cao jin wrote: > > Hi, > > I have been digging into this file for a while, and I still have 2 > > questions unclear, hope to get your help. > > > > > > > 2. > > Why gdt64 has following definition?: > > > > gdt64: > > .word gdt_end - gdt > > .long 0 > > .word 0 > > .quad 0 > > > > obviously, gdt64 stores the GDTR content under x86_64, which is 10 bytes > > long, so why not just: > > > > gdt64: > > .word gdt_end - gdt > > .quad 0 > > > > With above modification, it can boot. > > > > Seems you introduced gdt64 code in commit beebaccd50, could you help > with this question?
Looks like you are right. I've got confused at some point.
Could you prepare a patch?
> And it also remind me of another question about adjust_got which is also > introduced by you. Because I failed to construct a test environment with > ld version less than 2.24 until now, so I wanna do a quick ask here: > does it make sense to adjust GOT from the 4th entry of it? Because as I > know, the first 3 entries are special one, which (I guess) will be not used.
No.
These 3 entries are reserved for a special symbols (like entry 0 for _DYNAMIC). It means linker should not use these entries for normal symbols, but it doesn't mean that they don't need to be adjusted during the load.
-- Kirill A. Shutemov
| |