[SeaBIOS] [PATCH 09/10] build: Only export needed fields in LayoutInfo in layoutrom.py.
Kevin O'Connor
kevin at koconnor.net
Wed Jun 11 21:23:51 CEST 2014
A number of fields were exported from the layout info that weren't
used. Don't bother exporting them.
Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
---
scripts/layoutrom.py | 130 ++++++++++++++++++++++++++-------------------------
1 file changed, 67 insertions(+), 63 deletions(-)
diff --git a/scripts/layoutrom.py b/scripts/layoutrom.py
index 0b88768..ba557e6 100755
--- a/scripts/layoutrom.py
+++ b/scripts/layoutrom.py
@@ -162,15 +162,11 @@ def getSectionsPrefix(sections, prefix):
class LayoutInfo:
sections = None
genreloc = None
- sections16 = sec16_start = sec16_align = None
- sections32seg = sec32seg_start = sec32seg_align = None
- sections32flat = sec32flat_start = sec32flat_align = None
- sections32init = sec32init_start = sec32init_align = None
- sections32low = sec32low_start = sec32low_align = None
- sections32fseg = sec32fseg_start = sec32fseg_align = None
+ sec32init_start = sec32init_end = sec32init_align = None
+ sec32low_start = sec32low_end = None
+ zonelow_base = final_sec32low_start = None
zonefseg_start = zonefseg_end = None
final_readonly_start = None
- zonelow_base = final_sec32low_start = None
varlowsyms = entrysym = None
# Determine final memory addresses for sections
@@ -179,101 +175,109 @@ def doLayout(sections, config, genreloc):
li.sections = sections
li.genreloc = genreloc
# Determine 16bit positions
- li.sections16 = getSectionsCategory(sections, '16')
- textsections = getSectionsPrefix(li.sections16, '.text.')
- rodatasections = getSectionsPrefix(li.sections16, '.rodata')
- datasections = getSectionsPrefix(li.sections16, '.data16.')
- fixedsections = getSectionsPrefix(li.sections16, '.fixedaddr.')
+ sections16 = getSectionsCategory(sections, '16')
+ textsections = getSectionsPrefix(sections16, '.text.')
+ rodatasections = getSectionsPrefix(sections16, '.rodata')
+ datasections = getSectionsPrefix(sections16, '.data16.')
+ fixedsections = getSectionsPrefix(sections16, '.fixedaddr.')
firstfixed = fitSections(fixedsections, textsections)
remsections = [s for s in textsections+rodatasections+datasections
if s.finalloc is None]
- li.sec16_start, li.sec16_align = setSectionsStart(
+ sec16_start, sec16_align = setSectionsStart(
remsections, firstfixed, segoffset=BUILD_BIOS_ADDR)
# Determine 32seg positions
- li.sections32seg = getSectionsCategory(sections, '32seg')
- textsections = getSectionsPrefix(li.sections32seg, '.text.')
- rodatasections = getSectionsPrefix(li.sections32seg, '.rodata')
- datasections = getSectionsPrefix(li.sections32seg, '.data32seg.')
+ sections32seg = getSectionsCategory(sections, '32seg')
+ textsections = getSectionsPrefix(sections32seg, '.text.')
+ rodatasections = getSectionsPrefix(sections32seg, '.rodata')
+ datasections = getSectionsPrefix(sections32seg, '.data32seg.')
- li.sec32seg_start, li.sec32seg_align = setSectionsStart(
- textsections + rodatasections + datasections, li.sec16_start
+ sec32seg_start, sec32seg_align = setSectionsStart(
+ textsections + rodatasections + datasections, sec16_start
, segoffset=BUILD_BIOS_ADDR)
# Determine "fseg memory" data positions
- li.sections32fseg = getSectionsCategory(sections, '32fseg')
+ sections32fseg = getSectionsCategory(sections, '32fseg')
- li.sec32fseg_start, li.sec32fseg_align = setSectionsStart(
- li.sections32fseg, li.sec32seg_start, 16
+ sec32fseg_start, sec32fseg_align = setSectionsStart(
+ sections32fseg, sec32seg_start, 16
, segoffset=BUILD_BIOS_ADDR)
# Determine 32flat runtime positions
- li.sections32flat = getSectionsCategory(sections, '32flat')
- textsections = getSectionsPrefix(li.sections32flat, '.text.')
- rodatasections = getSectionsPrefix(li.sections32flat, '.rodata')
- datasections = getSectionsPrefix(li.sections32flat, '.data.')
- bsssections = getSectionsPrefix(li.sections32flat, '.bss.')
+ sections32flat = getSectionsCategory(sections, '32flat')
+ textsections = getSectionsPrefix(sections32flat, '.text.')
+ rodatasections = getSectionsPrefix(sections32flat, '.rodata')
+ datasections = getSectionsPrefix(sections32flat, '.data.')
+ bsssections = getSectionsPrefix(sections32flat, '.bss.')
- li.sec32flat_start, li.sec32flat_align = setSectionsStart(
+ sec32flat_start, sec32flat_align = setSectionsStart(
textsections + rodatasections + datasections + bsssections
- , li.sec32fseg_start, 16)
+ , sec32fseg_start, 16)
# Determine 32flat init positions
- li.sections32init = getSectionsCategory(sections, '32init')
- init32_textsections = getSectionsPrefix(li.sections32init, '.text.')
- init32_rodatasections = getSectionsPrefix(li.sections32init, '.rodata')
- init32_datasections = getSectionsPrefix(li.sections32init, '.data.')
- init32_bsssections = getSectionsPrefix(li.sections32init, '.bss.')
+ sections32init = getSectionsCategory(sections, '32init')
+ init32_textsections = getSectionsPrefix(sections32init, '.text.')
+ init32_rodatasections = getSectionsPrefix(sections32init, '.rodata')
+ init32_datasections = getSectionsPrefix(sections32init, '.data.')
+ init32_bsssections = getSectionsPrefix(sections32init, '.bss.')
- li.sec32init_start, li.sec32init_align = setSectionsStart(
+ sec32init_start, sec32init_align = setSectionsStart(
init32_textsections + init32_rodatasections
+ init32_datasections + init32_bsssections
- , li.sec32flat_start, 16)
+ , sec32flat_start, 16)
# Determine location of ZoneFSeg memory.
- li.zonefseg_end = li.sec32flat_start
+ zonefseg_end = sec32flat_start
if not genreloc:
- li.zonefseg_end = li.sec32init_start
- li.zonefseg_start = BUILD_BIOS_ADDR
- if li.zonefseg_start + BUILD_MIN_BIOSTABLE > li.zonefseg_end:
+ zonefseg_end = sec32init_start
+ zonefseg_start = BUILD_BIOS_ADDR
+ if zonefseg_start + BUILD_MIN_BIOSTABLE > zonefseg_end:
# Not enough ZoneFSeg space - force a minimum space.
- li.zonefseg_end = li.sec32fseg_start
- li.zonefseg_start = li.zonefseg_end - BUILD_MIN_BIOSTABLE
- li.sec32flat_start, li.sec32flat_align = setSectionsStart(
+ zonefseg_end = sec32fseg_start
+ zonefseg_start = zonefseg_end - BUILD_MIN_BIOSTABLE
+ sec32flat_start, sec32flat_align = setSectionsStart(
textsections + rodatasections + datasections + bsssections
- , li.zonefseg_start, 16)
- li.sec32init_start, li.sec32init_align = setSectionsStart(
+ , zonefseg_start, 16)
+ sec32init_start, sec32init_align = setSectionsStart(
init32_textsections + init32_rodatasections
+ init32_datasections + init32_bsssections
- , li.sec32flat_start, 16)
- li.final_readonly_start = min(BUILD_BIOS_ADDR, li.sec32flat_start)
+ , sec32flat_start, 16)
+ li.sec32init_start = sec32init_start
+ li.sec32init_end = sec32flat_start
+ li.sec32init_align = sec32init_align
+ final_readonly_start = min(BUILD_BIOS_ADDR, sec32flat_start)
if not genreloc:
- li.final_readonly_start = min(BUILD_BIOS_ADDR, li.sec32init_start)
+ final_readonly_start = min(BUILD_BIOS_ADDR, sec32init_start)
+ li.zonefseg_start = zonefseg_start
+ li.zonefseg_end = zonefseg_end
+ li.final_readonly_start = final_readonly_start
# Determine "low memory" data positions
- li.sections32low = getSectionsCategory(sections, '32low')
- sec32low_end = li.sec32init_start
+ sections32low = getSectionsCategory(sections, '32low')
+ sec32low_end = sec32init_start
if config.get('CONFIG_MALLOC_UPPERMEMORY'):
- final_sec32low_end = li.final_readonly_start
+ final_sec32low_end = final_readonly_start
zonelow_base = final_sec32low_end - 64*1024
- li.zonelow_base = max(BUILD_ROM_START, alignpos(zonelow_base, 2*1024))
+ zonelow_base = max(BUILD_ROM_START, alignpos(zonelow_base, 2*1024))
else:
final_sec32low_end = BUILD_LOWRAM_END
- li.zonelow_base = final_sec32low_end - 64*1024
+ zonelow_base = final_sec32low_end - 64*1024
relocdelta = final_sec32low_end - sec32low_end
li.sec32low_start, li.sec32low_align = setSectionsStart(
- li.sections32low, sec32low_end, 16
- , segoffset=li.zonelow_base - relocdelta)
+ sections32low, sec32low_end, 16
+ , segoffset=zonelow_base - relocdelta)
+ li.sec32low_end = sec32low_end
+ li.zonelow_base = zonelow_base
li.final_sec32low_start = li.sec32low_start + relocdelta
# Print statistics
- size16 = BUILD_BIOS_ADDR + BUILD_BIOS_SIZE - li.sec16_start
- size32seg = li.sec16_start - li.sec32seg_start
- size32fseg = li.sec32seg_start - li.sec32fseg_start
- size32flat = li.sec32fseg_start - li.sec32flat_start
- size32init = li.sec32flat_start - li.sec32init_start
- sizelow = sec32low_end - li.sec32low_start
+ size16 = BUILD_BIOS_ADDR + BUILD_BIOS_SIZE - sec16_start
+ size32seg = sec16_start - sec32seg_start
+ size32fseg = sec32seg_start - sec32fseg_start
+ size32flat = sec32fseg_start - sec32flat_start
+ size32init = sec32flat_start - sec32init_start
+ sizelow = li.sec32low_end - li.sec32low_start
print("16bit size: %d" % size16)
print("32bit segmented size: %d" % size32seg)
print("32bit flat size: %d" % size32flat)
@@ -416,9 +420,9 @@ def writeLinkerScripts(li, out16, out32seg, out32flat):
li.final_sec32low_start,
li.final_readonly_start,
li.sec32low_start,
+ li.sec32low_end,
li.sec32init_start,
- li.sec32init_start,
- li.sec32flat_start,
+ li.sec32init_end,
sec32all_start,
relocstr,
outRelSections(li.sections, 'code32flat_start'))
--
1.9.3
More information about the SeaBIOS
mailing list