1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-17 07:17:16 +00:00

Compare commits

...

18 Commits

Author SHA1 Message Date
Nick Briggs
4245764b31 Turn on DTD checking and differentiate error messages. 2023-07-23 18:55:31 -07:00
Nick Briggs
4520609479 Print the bad Lisp pointer as well as where it came from. 2023-07-23 14:51:36 -07:00
Nick Briggs
3b42f0579d The lisp pointers are 28 bits not 24 2023-07-23 12:23:17 -07:00
Nick Briggs
29b492093d Add ARRAYCHECK to makefile slices for macOS 2023-07-22 15:40:11 -07:00
Nick Briggs
1c6d366e3c Catch more pointer problems in NativeAligned4FromLAddr 2023-07-22 15:37:14 -07:00
Nick Briggs
c74e7a0169 Avoid accessing free block chain pointers when block is not free 2023-07-22 15:36:11 -07:00
Nick Briggs
060420ce42 struct buf is missing definition for byte-swapped bigvm case
While there was a definition for the pre-bigvm case, with 24-bit
pointers, for byteswapped (little-endian) systems, there was no
structure definition for the bigvm case, with 28-bit pointers.
2023-07-22 15:34:33 -07:00
Frank Halasz
44a4a4c42c Add cygwin-sdl build to buildRelease workflow (#476)
* Start cygwin-sdl builds: first pass at buildCygwinBuilderImage workflow.  Add makefile-cygwin.x86_64-sdl.

* WIP Dockerfile_cygwin_builder

* First pass of complete cygwin-sdl build workflow

* Fix indent error in buildCygwinBuilderImage.yml

* fix incorrect use of github token in buildCygwinBuilderImage.yml

* fix incorrect use of --build-arg in buildCygwinBuilderImage.

* fix incorrect docker build statement in buildCygwinBuilderImage.

* make docker tag lowercase since apparently Wiondows docker doesn't like uppercase tags in buildCygwinBuilderImage.

* fix quotiing on last commit in buildCygwinBuilderImage.

* fix download output location for SDL2 in buildCygwinBuilderImage.

* Add windows/cygwin build to buildRelease workflow

* Fix typos in buildRelease workflow

* Fix more typos in buildRelease workflow

* Debugging per-system if statements buildRelease workflow

* Debugging per-system if statements buildRelease workflow #2

* Debugging per-system if statements buildRelease workflow #3

* Fix checkout actions step to use powershell-sims not bash-isms in Windows job

* Fix Docker_env step to use powershell-isms not bash-isms in Windows job

* Fix Docker_env step to use powershell-isms not bash-isms in Windows job #2

* Fix Docker_env step to use powershell-isms not bash-isms in Windows job #3

* Revamp cygwin build to use docker build instead of docker buildxx because buildx seems to not like windows containers

* Fix some line split nonsense

* Fix typo in last commit

* Add proper repo info to Dockerfile_cygwin_maiko

* More debugging

* Revamp how cygwin-sdl is built - now build directly on runner and not via a Dcokerfile and docker.

* Fix typo

* Fix retrieve of sdl2

* Fix set up release tag action to ake account of the fact that Maiko has been checked out to cygwin\maiko instead of top level workspace

* Fix set up release tag action to ake account of the fact that Maiko has been checked out to cygwin\maiko instead of top level workspace #2

* Fix set up release tag action to ake account of the fact that Maiko has been checked out to cygwin\maiko instead of top level workspace #3

* Cleanup build maiko step

* Prevent git from messing uo line endings on checkout

* Fix copy of cygwin.x86_64 dir to relesase tars

* Set execute bit of (almost) all files in release tar; rearrange build step to use cyugwin bash as the shell

* Fix rearrange build step to use cyugwin bash as the shell

* Try a different way of rearrange build step to use cyugwin bash as the shell

* Fix typo

* When cygwin bash as shell did not work; reverting to brute-force way

* Hopefully fix release push not getting tar file

* Cygwin-sdl build working; remove debugging code

* Remove wrokflow files associated with abandoned attempts at building cygwin via docker

---------

Co-authored-by: Frank Halasz <fghalasz@interlisp.org>
2023-06-18 11:48:39 -07:00
Frank Halasz
2b24184293 Merge pull request #475 from Interlisp/fgh_intro_cygwin_builder_workflow
Introduce buildCygwinBuilderImage.yml into master so I can test on dev branch

Trivial add so I can continue testing on a dev branch - so immediate merge.
2023-06-11 18:26:05 -07:00
Frank G Halasz
c4f8ccc928 Introduce buildCygwinBuilderImage.yml into master so I can test on dev branch 2023-06-11 18:22:47 -07:00
Frank Halasz
0ab92f5e65 Merge pull request #473 from Interlisp/fgh_efficent-linux-builds
Github workflow: increase efficiency of Linux builds (slightly)
2023-06-11 13:37:57 -07:00
Frank Halasz
501fb8e87a Fixing various typos 2023-06-08 12:06:13 -07:00
Frank Halasz
da7025ff02 Update MacOS build to use cmake instead of makeright 2023-06-07 23:24:39 -07:00
Frank Halasz
b6328a234d Fix typo and cleanup trailing whitespaces in buildRelease.yml 2023-06-07 23:21:11 -07:00
Frank Halasz
74d6728fba Results of debugging new linux workflows 2023-06-07 23:18:26 -07:00
Frank Halasz
59f2f2e835 Updated maiko build workflows to be mch more efficient incl. sing Apline Lnux to do the builds; also removed the Maiko docker image since it no longer makes sense 2023-06-07 23:18:05 -07:00
Frank Halasz
8563c8700d Merge pull request #472 from Interlisp/fgh_introduce-build-release-workflow
First step in renaming workflow buildReleaseInclDocker to just buildRelease
2023-06-07 23:03:29 -07:00
Frank Halasz
aa019bdce2 First step in renaming workflow buildReleaseInclDocker to just buildRelease. This commit allows us to test changes to buildRelease workflow on a branch before making the name change permanent. 2023-06-07 23:01:12 -07:00
12 changed files with 257 additions and 146 deletions

18
.github/workflows/Dockerfile_builder vendored Executable file
View File

@@ -0,0 +1,18 @@
#*******************************************************************************
#
# Dockerfile to build image with all the tools to build Maiko
#
# Copyright 2023 by Interlisp.org
#
# Frank Halasz 2023-02-21
#
# ******************************************************************************
FROM ubuntu:latest
SHELL ["/bin/bash", "-c"]
USER root:root
# Install build tools
RUN apt-get update && apt-get install -y make clang libx11-dev gcc
USER root
WORKDIR /root
ENTRYPOINT /bin/bash

25
.github/workflows/Dockerfile_maiko vendored Executable file
View File

@@ -0,0 +1,25 @@
#*******************************************************************************
#
# Dockerfile to build Maiko for Linux to be used by buildRelease github action
# The output of this is intended to be a directory in the github workspace
# file system it is not intended to be a useable Docker image.
#
# Copyright 2023 by Interlisp.org
#
# Frank Halasz 2023-02-21
#
# ******************************************************************************
FROM ghcr.io/interlisp/maiko-builder
ARG INSTALL_LOCATION=/usr/local/interlisp/maiko
SHELL ["/bin/bash", "-c"]
# Copy over / clean maiko repo
COPY . ${INSTALL_LOCATION}
# Build maiko
RUN cd ${INSTALL_LOCATION}/bin \
&& ./makeright x cleanup \
&& ./makeright x
RUN cd ${INSTALL_LOCATION}/bin \
&& if [ "$(./machinetype)" = "x86_64" ]; then \
./makeright init; \
fi

View File

@@ -32,15 +32,9 @@ jobs:
runs-on: ubuntu-latest
steps:
# Checkout just the relevant Dockerfile
- name: Checkout files
uses: Bhacaz/checkout-files@v2
with:
files: .github/workflows/Dockerfile_builder
# Checkout the branch of maiko code
#- name: Checkout
# uses: actions/checkout@v3
# Checkout maiko
- name: Checkout maiko
uses: actions/checkout@v3
# Setup docker environment variables
- name: Setup Docker Environment Variables
@@ -49,7 +43,7 @@ jobs:
DOCKER_REGISTRY="ghcr.io"
DOCKER_NAMESPACE=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
DOCKER_REPO=${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/maiko-builder
DOCKER_TAGS="${DOCKER_REPO}:latest
DOCKER_TAGS="${DOCKER_REPO}:latest"
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_ENV}
echo "DOCKER_TAGS=${DOCKER_TAGS}" >> ${GITHUB_ENV}
@@ -66,7 +60,7 @@ jobs:
# Login to ghcr.io
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -89,5 +83,5 @@ jobs:
push: true
tags: ${{ env.DOCKER_TAGS }}
######################################################################################

View File

@@ -1,30 +1,27 @@
#*******************************************************************************
# buidReleaseInclDocker.yml
# buidRelease.yml
#
# Workflow to build a Maiko release that is pushed to github as well as
# Docker images incorporating the release, which are pushed to Docker Hub.
# For linux: release assets are built/pushed for X86_64, aarch64 and arm7vl and
# a multiplatform Docker image is pushed.
# For macOS: release assets are built/pushed for X86_64. (No aarch64 as yet.)
# Workflow to build a Maiko release that is pushed to github.
# For linux: release assets are built/pushed for X86_64, aarch64 and arm7vl.
# For macOS: release assets are built/pushed for X86_64 and aarch64 as well as
# a set of universal binaries.
# For Windows: not supported
#
# Note release pushed to github automatically includes source code assets
# in tar and zip formats.
#
# 2022-01-16 by Frank Halasz based on earlier workflow called buildDocker.yml
# Updated 2023-06-06: Remove docker image push; increase build efficeincy for linux
#
# Copyright 2022 by Interlisp.org
# Copyright 2022-2023 by Interlisp.org
#
#
# ******************************************************************************
name: 'Build/Push Release & Docker Image'
env:
workflow: 'buildReleaseInclDocker.yml'
name: 'Build/Push Release'
# Run this workflow on ...
on:
on:
workflow_dispatch:
inputs:
draft:
@@ -66,14 +63,18 @@ defaults:
run:
shell: bash
# 2 separate jobs here that can run in parallel
# 3 separate jobs here that can run in parallel
#
# 1. Linux: Build/push a multiplatform Linux Docker image and use results to
# build/push Linux release assets.
# 1. Linux: Build a multiplatform Linux Docker file system (not saved) and use
# results to build/push Linux release assets.
#
# 2. MacOs: Build maiko for MacOS (x86_64, aarch64, and universal) then create
# 2. MacOs: Build maiko for MacOS (x86_64, aarch64, and universal) then create
# and push release assets.
#
# 3. Windows: Build maiko for cygwin and SDL (x86_64). Build is done within the
# cygwin-maiko-builder Docker image by building a new docker files system (and
# not a docker container) which is used to build/push Windows(cygwin) assets.
#
jobs:
@@ -87,6 +88,9 @@ jobs:
outputs:
draft: ${{ steps.one.outputs.draft }}
force: ${{ steps.one.outputs.force }}
linux: ${{ steps.one.outputs.linux }}
macos: ${{ steps.one.outputs.macos }}
windows: ${{ steps.one.outputs.windows }}
steps:
- id: one
run: >
@@ -99,9 +103,11 @@ jobs:
echo "workflow_call";
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
fi
fi;
echo "linux=true" >> $GITHUB_OUTPUT;
echo "macos=true" >> $GITHUB_OUTPUT;
echo "windows=true" >> $GITHUB_OUTPUT;
######################################################################################
@@ -114,7 +120,7 @@ jobs:
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -124,7 +130,7 @@ jobs:
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
@@ -137,12 +143,15 @@ jobs:
# Use docker images to create and push release assets to github
linux:
needs: [inputs, sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
needs.inputs.outputs.linux == 'true'
&& (
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
)
runs-on: ubuntu-latest
steps:
@@ -154,7 +163,7 @@ jobs:
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Checkout the branch
# Checkout the branch
- name: Checkout
uses: actions/checkout@v3
@@ -174,33 +183,27 @@ jobs:
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
echo "docker_tags=${DOCKER_TAGS}" >> $GITHUB_OUTPUT
# Setup the Docker Machine Emulation environment.
# Setup the Docker Machine Emulation environment.
- name: Set up QEMU
uses: docker/setup-qemu-action@master
uses: docker/setup-qemu-action@v2
with:
platforms: linux/amd64,linux/arm64,linux/arm/v7
# Setup the Docker Buildx funtion
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
# Login into DockerHub - required to store the created image
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
uses: docker/setup-buildx-action@v2
# Do the Docker Build using the Dockerfile in the repository we
# checked out. Push the result to Docker Hub.
# checked out. Save the results in a directory under /tmp to be used
# for creating release tars. Does not creatre a docker image and does not
# push anything to Docker Hub.
#
# NOTE: THE ACTUAL MAIKO BUILD (FOR LINUX) HAPPENS HERE - I.E., IN THE
# DOCKER BUILD CALL. BUILD COMMANDS ARE SPECIFIED IN THE
# Dockerfile, NOT HERE IN THE WORKFLOW.
#
- name: Build Docker Image for Push to Docker Hub
if: ${{ true }}
- name: Build Docker Image and Save It Locally
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
@@ -208,23 +211,7 @@ jobs:
BUILD_DATE=${{ steps.docker_env.outputs.build_time }}
RELEASE_TAG=${{ steps.tag.outputs.release_tag }}
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7
# Push the result to DockerHub
push: true
tags: ${{ steps.docker_env.outputs.docker_tags }}
# Redo the Docker Build (hopefully mostly using the cache from the previous build).
# But save the results in a directory under /tmp to be used for creating release tars.
- name: Rebuild Docker Image For Saving Locally
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
build-args: |
BUILD_DATE=${{ steps.docker_env.outputs.build_time }}
RELEASE_TAG=${{ steps.tag.outputs.release_tag }}
context: .
file: ./Dockerfile
file: ./.github/workflows/Dockerfile_maiko
platforms: linux/amd64,linux/arm64,linux/arm/v7
# Put the results out to the local file system
outputs: type=local,dest=/tmp/docker_images
@@ -254,7 +241,7 @@ jobs:
# Push Release to github
- name: Push the release
uses: ncipollo/release-action@v1
with:
with:
allowUpdates: true
artifacts:
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.x86_64.tgz,
@@ -273,14 +260,17 @@ jobs:
needs: [inputs, sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
needs.inputs.outputs.macos == 'true'
&& (
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
)
runs-on: macos-latest
steps:
# Checkout the branch
# Checkout the branch
- name: Checkout
uses: actions/checkout@v3
@@ -325,7 +315,7 @@ jobs:
sudo ditto /Volumes/SDL2/SDL2.framework /Library/Frameworks/SDL2.framework
hdiutil detach /Volumes/SDL2/
# Build maiko
# Build maiko
- name: Build ldeinit
working-directory: ./bin
run: |
@@ -389,6 +379,98 @@ jobs:
draft: ${{ needs.inputs.outputs.draft }}
token: ${{ secrets.GITHUB_TOKEN }}
######################################################################################
# Windows: build for Windows-Cygwin via Docker build and use results to
# create and push release assets to github
windows:
needs: [inputs, sentry]
if: |
needs.inputs.outputs.windows == 'true'
&& (
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
)
runs-on: windows-2022
defaults:
run:
shell: powershell
steps:
# setup git to not mess up line endings
- name: git config
run: git config --global core.autocrlf input
# Retrieve Cygwin setup and install cygwin
- name: Install cygwin
id: cygwin
run: |
wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe
Unblock-File setup-x86_64.exe
Start-Process setup-x86_64.exe -Wait -ArgumentList @("--root", ".\cygwin", "--quiet-mode", "--no-admin", "--wait", "--no-shortcuts", "--no-write-registry", "--verbose", "--site", "http://www.gtlib.gatech.edu/pub/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang")
cygwin\bin\bash -login -c 'sed -i -e "s/^none/#none/" /etc/fstab; echo "none / cygdrive binary,posix=0,user 0 0" >>/etc/fstab'
# Retrieve SDL2 and install in cygwin
- name: Install SDL2
id: sdl2
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release download 2.26.5 --repo interlisp/cygwin-sdl --pattern *.tgz --output .\cygwin\sdl2.tar.gz
cygwin\bin\bash -login -c 'cd /; tar xzf sdl2.tar.gz'
# Checkout the branch
- name: Checkout
uses: actions/checkout@v3
with:
path: cygwin\maiko
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: |
mv ./Actions_${{ github.sha }}/actions ../actions
rm -recurse -force ./Actions_${{ github.sha }}
# Setup release tag
- name: Setup Release Tag
id: tag
uses: ./../actions/release-tag-action
with:
path: cygwin/maiko
# Build maiko TODO-cleanup
- name: Build Cygwin-SDL Maiko
run: |
cygwin\bin\bash -login -c 'cd /maiko/bin && ./makeright sdl cleanup && ./makeright sdl'
cygwin\bin\bash -login -c 'mkdir /tmp/maiko; mkdir /tmp/maiko/bin; mkdir /tmp/maiko/cygwin.x86_64'
cygwin\bin\bash -login -c 'cp /maiko/bin/osversion /tmp/maiko/bin; cp /maiko/bin/machinetype /tmp/maiko/bin'
cygwin\bin\bash -login -c 'cp /maiko/bin/config.guess /tmp/maiko/bin; cp /maiko/bin/config.sub /tmp/maiko/bin'
cygwin\bin\bash -login -c 'cp /maiko/cygwin.x86_64/* /tmp/maiko/cygwin.x86_64; cp /usr/local/bin/SDL2.DLL /tmp/maiko/cygwin.x86_64'
cygwin\bin\bash -login -c 'chmod +x /tmp/maiko/bin/*; chmod +x /tmp/maiko/cygwin.x86_64/*'
cygwin\bin\bash -login -c 'echo lde > /tmp/maiko/cygwin.x86_64/lde.exe.local; echo ldesdl > /tmp/maiko/cygwin.x86_64/ldesdl.exe.local'
cygwin\bin\bash -login -c 'mkdir -p /tmp/release_tars'
cygwin\bin\bash -login -c 'tar -c -z -C /tmp -f /tmp/release_tars/${{ steps.tag.outputs.release_tag }}-cygwin.x86_64.tgz maiko'
# Push Release to github
- name: Push the release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
cygwin/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-cygwin.x86_64.tgz
tag: ${{ steps.tag.outputs.release_tag }}
draft: ${{ needs.inputs.outputs.draft }}
token: ${{ secrets.GITHUB_TOKEN }}
######################################################################################
@@ -403,9 +485,9 @@ jobs:
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, linux, macos]
needs: [inputs, sentry, linux, macos, windows]
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -415,16 +497,15 @@ jobs:
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Set sentry
- name: Is build for this commit already completed?
- name: Is build for this commit already completed?
id: set
uses: ./../actions/set-sentry-action
with:
tag: "release_docker"
- name: Output
id: output
run: |
echo "build_successful=true" >> $GITHUB_OUTPUT
######################################################################################

3
.gitignore vendored
View File

@@ -22,9 +22,12 @@ cmake-build-*/**
*.armv7l-x/**
*.armv7l/**
*.aarch64-x/**
*.aarch64-sdl/**
*.aarch64/**
init.386/**
*.universal/**
# core files
core
*.core
*.swp

View File

@@ -1,55 +0,0 @@
#*******************************************************************************
#
# Dockerfile to build Maiko (Stage 1) and create a Docker image and push it
# to DockerHub (stage 2).
#
# Copyright 2022 by Interlisp.org
#
# ******************************************************************************
#
# Build Maiko Stage
#
FROM ubuntu:focal AS builder
SHELL ["/bin/bash", "-c"]
USER root:root
# Install build tools
RUN apt-get update && apt-get install -y make clang libx11-dev gcc x11vnc xvfb
# Copy over / clean maiko repo
COPY . /app/maiko
RUN rm -rf /app/maiko/linux*
# Build maiko
WORKDIR /app/maiko/bin
RUN ./makeright x
RUN if [ "$(./osversion)" = "linux" ] && [ "$(./machinetype)" = "x86_64" ]; then ./makeright init; fi
# Prep for Install Stage
RUN mv ../$(./osversion).$(./machinetype) ../TRANSFER
#
# Install Maiko Stage
#
FROM ubuntu:focal
ARG BUILD_DATE="not_available"
ARG RELEASE_TAG="not_available"
LABEL name="Maiko"
LABEL description="Virtual machine for Interlisp Medley"
LABEL url="https://github.com/Interlisp/maiko"
LABEL build-time=$BUILD_DATE
LABEL release_tag=$RELEASE_TAG
ENV MAIKO_RELEASE=$RELEASE_TAG
ENV MAIKO_BUILD_DATE=$BUILD_DATE
ARG BUILD_LOCATION=/app/maiko
ARG INSTALL_LOCATION=/usr/local/interlisp/maiko
#
SHELL ["/bin/bash", "-c"]
USER root:root
# Copy release files into /usr/local/directories
COPY --from=builder ${BUILD_LOCATION}/bin/osversion ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/bin/machinetype ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/bin/config.guess ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/bin/config.sub ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/TRANSFER/lde* ${INSTALL_LOCATION}/TRANSFER/
RUN cd ${INSTALL_LOCATION} && mv TRANSFER "$(cd bin && ./osversion).$(cd bin/ && ./machinetype)"
# Some niceties
USER root
WORKDIR /root
ENTRYPOINT /bin/bash

View File

@@ -0,0 +1,20 @@
# Options for Linux, Intel x86_64 and X-Window
CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include
#CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
XFLAGS = -DSDL
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -L/usr/local/lib -lSDL2
#
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl

View File

@@ -16,8 +16,8 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2
DEBUGFLAGS = # -DDEBUG -DOPTRACE
OPTFLAGS = -g -O2
DEBUGFLAGS = -DARRAYCHECK -DDTDDEBUG # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O1 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DEBUGFLAGS = -DARRAYCHECK -DDTDDEBUG # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -28,11 +28,19 @@
*/
/**********************************************************************/
#include <execinfo.h>
#include <stddef.h>
#include <stdio.h>
#include "lispemul.h"
#include "lspglob.h"
static inline void dobacktrace()
{
void* callstack[128];
int i, frames = backtrace(callstack, 128);
backtrace_symbols_fd(callstack, frames, 2);
}
static inline LispPTR LAddrFromNative(void *NAddr)
{
if ((uintptr_t)NAddr & 1) {
@@ -48,8 +56,9 @@ static inline DLword *NativeAligned2FromLAddr(LispPTR LAddr)
static inline LispPTR *NativeAligned4FromLAddr(LispPTR LAddr)
{
if (LAddr & 1) {
printf("Misaligned pointer in NativeAligned4FromLAddr 0x%x\n", LAddr);
if (LAddr & 1 || LAddr > 0x0FFFFFFF) {
printf("Misaligned/bad pointer in NativeAligned4FromLAddr 0x%x\n", LAddr);
dobacktrace();
}
return (void *)(Lisp_world + LAddr);
}

View File

@@ -97,6 +97,18 @@ struct buf {
};
#endif /* BIGVM */
#else
#ifdef BIGVM
struct buf {
LispPTR filepage;
LispPTR vmempage;
LispPTR buffernext;
unsigned sysnext : 28;
unsigned unused : 1;
unsigned iodirty : 1;
unsigned usermapped : 1;
unsigned noreference : 1;
};
#else
struct buf {
LispPTR filepage;
LispPTR vmempage;
@@ -107,6 +119,7 @@ struct buf {
unsigned usermapped : 1;
unsigned noreference : 1;
};
#endif /* BIGVM */
#endif /* BYTESWAP */
/************* The following procedure is common !! **************************/
@@ -143,8 +156,10 @@ LispPTR findptrsbuffer(LispPTR ptr) {
while (LAddrFromNative(bptr) != NIL) {
if (ptr == bptr->vmempage)
return (LAddrFromNative(bptr));
else
else {
if (bptr->sysnext & 0xF0000000) printf("findptrsbuffer: would have failed %p 0x%X\n", bptr, bptr->sysnext);
bptr = (struct buf *)NativeAligned4FromLAddr(bptr->sysnext);
}
}
return (NIL);
}
@@ -192,8 +207,6 @@ LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
{
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
btrailer = (struct arrayblock *)NativeAligned4FromLAddr(Trailer(base, bbase));
bfwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->fwd);
bbwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->bkwd);
if (bbase->password != ARRAYBLOCKPASSWORD) {
printarrayblock(base);
error("ARRAYBLOCK password wrong\n");
@@ -215,7 +228,10 @@ LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
} else if (!onfreelist || (bbase->arlen < MINARRAYBLOCKSIZE))
/* Remaining tests only for free list. */
return (NIL);
else if ((bbwd->fwd != base) || (bfwd->bkwd != base)) {
bfwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->fwd);
bbwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->bkwd);
if ((bbwd->fwd != base) || (bfwd->bkwd != base)) {
error("ARRAYBLOCK links fouled\n");
} else {
fbl = FreeBlockChainN(bbase->arlen);

View File

@@ -72,7 +72,7 @@ retry:
if (917505 == *(LispPTR *)ptr) error("N_OP_createcell E0001 error");
/* replace dtd_free with newcell's top DLword (it may keep next chain)*/
dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK;
if (dtd68k->dtd_free & 0x8000001) error("bad entry on free chain.");
if (dtd68k->dtd_free & 0x8000001) error("bad entry on free chain(1).");
dtd68k->dtd_oldcnt++;
@@ -84,7 +84,7 @@ retry:
return (tos);
} else {
dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL);
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(2).");
goto retry;
}
@@ -119,7 +119,7 @@ retry:
/* replace dtd_free with newcell's top DLword (it may keep next chain)*/
dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK;
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(3).");
#ifdef DTDDEBUG
if ((dtd68k->dtd_free != 0) && (type != GetTypeNumber(dtd68k->dtd_free)))
@@ -144,7 +144,7 @@ retry:
} else {
dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL);
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(4).");
#ifdef DTDDEBUG
check_dtd_chain(type);