Nothing in particular determines that that symbol is a 0x8000. The -T
option says that the text segment will start at 0x8000. The Go linker
doesn't have any support for ordering the symbols in the text segment.
They just wind up being placed based on the order in which the linker
processes its inputs, which is unpredictable and subject to change.
The -E option sets the value stored in the ELF ehdr's e_entry field.
Ian