Skip to content

cmd/link: add -D flag to specify data segment address in the linker #74945

@kevaundray

Description

@kevaundray

Proposal Details

Currently I am using TamaGo to compile go to run on bare metal. The memory layout for the bare metal device assumes that RAM starts from a specific address. Looking at the linker, it seems to put data like BSS after .text.

Possible change

Looking in the linker, I think an if statement could be added after this line to check if -D was supplied:

	// If -D flag is specified, use it 
	if *FlagDataAddr != -1 {
		va = uint64(*FlagDataAddr)
	}
	

and then a change in layout since it seems to assume that virtual addresses are contiguous

Note

It's not possible to use an external linker in this case. Opening this up assuming that this flag is useful in general

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatureRequestIssues asking for a new feature that does not need a proposal.NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.ToolProposalIssues describing a requested change to a Go tool or command-line program.compiler/runtimeIssues related to the Go compiler and/or runtime.help wanted

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions