Tune the page sizes

This commit is contained in:
Justine Tunney 2023-07-24 00:49:06 -07:00
parent ff198e7577
commit 94ea34367a
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
12 changed files with 56 additions and 178 deletions

View file

@ -72,7 +72,7 @@ SECTIONS {
KEEP(*(SORT_NONE(.fini)))
} =0x1f2003d5
.privileged ALIGN(CONSTANT(MAXPAGESIZE)) : {
.privileged ALIGN(CONSTANT(COMMONPAGESIZE)) : {
__privileged_start = .;
*(.privileged*)
} =0x1f2003d6
@ -119,8 +119,8 @@ SECTIONS {
_etext = .;
PROVIDE(etext = .);
. = ALIGN(CONSTANT(MAXPAGESIZE));
. = DATA_SEGMENT_ALIGN(CONSTANT(MAXPAGESIZE), CONSTANT(COMMONPAGESIZE));
. = ALIGN(CONSTANT(COMMONPAGESIZE));
. = DATA_SEGMENT_ALIGN(CONSTANT(COMMONPAGESIZE), CONSTANT(COMMONPAGESIZE));
.eh_frame : ONLY_IF_RW {
KEEP(*(.eh_frame))
@ -209,6 +209,7 @@ SECTIONS {
*(.bss .bss.* .gnu.linkonce.b.*)
KEEP(*(SORT_BY_NAME(.piro.bss.sort.*)))
*(COMMON)
. = ALIGN(CONSTANT(COMMONPAGESIZE));
}
_bss_end__ = .;

View file

@ -224,7 +224,7 @@ stub: mov $0x40,%dl // *literally* dos
3: .byte 0xbd,0,0 // a.k.a. mov imm,%bp
jmp pc // real mode, is real
jmp _start // surprise it's unix
.endfn stub
.endfn stub,globl
/*
αcτµαlly pδrταblε εxεcµταblε § ibm personal computer
@ -1073,25 +1073,10 @@ ape_pe: .ascin "PE",4
.quad 0 // HeapReserve
.quad 0 // HeapCommit
.long 0 // LoaderFlags
.long 16 // NumberOfDirectoryEntries
.long 2 // NumberOfDirectoryEntries
.long 0,0 // ExportsDirectory
.stub ape_idata,long // ImportsDirectory
.stub ape_idata_idtsize,long // ImportsDirectorySize
.long 0,0 // ResourcesDirectory
.long 0,0 // ExceptionsDirectory
.long 0,0 // SecurityDirectory
.long 0,0 // BaseRelocationTable
.long 0,0 // DebugDirectory
.long 0,0 // DescriptionString
.long 0,0 // MachineSpecific
.long 0,0 // ThreadLocalStorage
.long 0,0 // LoadConfigurationDirectory
.long 0,0 // BoundImportDirectory
.stub ape_idata,long // ImportAddressDirectory
.stub ape_idata_iatsize,long // ImportAddressDirectorySize
.long 0,0 // DelayImportDescriptor
.long 0,0 // ComPlusRuntimeHeader
.long 0,0 // Reserved
.endobj ape_pe,globl
.previous

View file

@ -390,7 +390,7 @@ SECTIONS {
} :Tls :Rom
/*END: Read Only Data */
. = DATA_SEGMENT_ALIGN(CONSTANT(MAXPAGESIZE), CONSTANT(COMMONPAGESIZE));
. = DATA_SEGMENT_ALIGN(CONSTANT(COMMONPAGESIZE), CONSTANT(COMMONPAGESIZE));
. = DATA_SEGMENT_RELRO_END(0, .);
/* this only tells the linker about the layout of uninitialized */
@ -461,7 +461,7 @@ SECTIONS {
KEEP(*(.bssepilogue))
. = ALIGN(64);
. = ALIGN(CONSTANT(COMMONPAGESIZE));
/*END: NT FORK COPYING */
_end = .;
@ -722,7 +722,7 @@ PFSTUB4(ape_pe_offset, ape_pe - ape_mz);
ape_pe_optsz = ape_pe_sections - (ape_pe + 24);
ape_pe_shnum = (ape_pe_sections_end - ape_pe_sections) / 40;
ape_pe_base = IMAGE_BASE_VIRTUAL;
ape_idata = LINK_WINDOWS ? RVA(ape_idata_iat) : 0;
ape_idataz = LINK_WINDOWS ? RVA(ape_idata_iat) : 0;
ape_idata_iatsize = LINK_WINDOWS ? ape_idata_iatend - ape_idata_iat : 0;
ape_idata = LINK_WINDOWS ? RVA(ape_idata_idt) : 0;
ape_idata_idtsize = LINK_WINDOWS ? ape_idata_idtend - ape_idata_idt : 0;

View file

@ -215,7 +215,7 @@ o/$(MODE)/ape/ape.elf.dbg: \
o/$(MODE)/ape/launch.o \
o/$(MODE)/ape/systemcall.o \
ape/loader.lds
@$(COMPILE) -ALINK.elf $(LINK) $(APE_LOADER_LDFLAGS) -o $@ $(patsubst %.lds,-T %.lds,$^)
@$(COMPILE) -ALINK.elf $(LD) $(APE_LOADER_LDFLAGS) -o $@ $(patsubst %.lds,-T %.lds,$^)
.PHONY: o/$(MODE)/ape
o/$(MODE)/ape: $(APE_CHECKS) \

View file

@ -888,7 +888,8 @@ __attribute__((__noreturn__)) void ApeLoader(long di, long *sp, char dl) {
}
}
if (READ64(M->ehdr.buf) == READ64("MZqFpD='") ||
READ64(M->ehdr.buf) == READ64("jartsr='")) {
READ64(M->ehdr.buf) == READ64("jartsr='") ||
READ64(M->ehdr.buf) == READ64("APEDBG='")) {
for (p = M->ehdr.buf; p < pe; ++p) {
if (READ64(p) != READ64("printf '")) {
continue;