ld: allow linking to a different offset

This commit is contained in:
Paul Mathieu 2021-04-17 23:05:02 -07:00
parent 2ab6b4a5a9
commit 0e6a311610

View File

@ -21,10 +21,10 @@ def parse_objs(objs):
return sections, relocs
def map_sections(sections):
def map_sections(sections, offset=0):
secmap = []
addr = 0
addr = offset
# _start goes first
for sec in sections:
@ -76,6 +76,8 @@ def parse_args():
parser.add_argument('--output', '-o', type=argparse.FileType('wb'),
default=sys.stdout.buffer, help='output file')
parser.add_argument('--vhdl', help='vhdl output with given template')
parser.add_argument('--offset', default=0, type=int,
help='memory offset to link from')
return parser.parse_args()
@ -85,7 +87,7 @@ def main():
with open(CRT0_FILE, 'rb') as crt0:
sections, relocs = parse_objs(args.objfiles + [crt0])
sectionmap = map_sections(sections)
sectionmap = map_sections(sections, offset=args.offset)
do_relocs(sectionmap, relocs)
text = dump(sectionmap)