Skip to content

Commit 9dcb900

Browse files
authored
feat: bump emscripten to v4 (#404)
2 parents 5e0fd82 + 41d8069 commit 9dcb900

File tree

4 files changed

+51
-14
lines changed

4 files changed

+51
-14
lines changed

frontend/src/pages/AssemblerPage.tsx

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,18 @@ export default function AssemblerPage(props: StackProps) {
121121
printErr: (str) =>
122122
output.push({ program: "gnu-as", line: str, fd: "stderr" }),
123123
arguments: [...asParams, "-o", "/tmp/a.out", "/tmp/a.s"],
124-
preRun: [(m) => m.FS.writeFile("/tmp/a.s", inputData)],
125-
postRun: [(m) => (elf = m.FS.readFile("/tmp/a.out"))],
124+
preRun: [
125+
(m) => {
126+
m.FS.writeFile("/tmp/a.s", inputData);
127+
},
128+
],
129+
postRun: [
130+
(m) => {
131+
try {
132+
elf = m.FS.readFile("/tmp/a.out");
133+
} catch (e) {}
134+
},
135+
],
126136
});
127137

128138
if (!elf) {
@@ -145,7 +155,21 @@ export default function AssemblerPage(props: StackProps) {
145155
useEffect(() => {
146156
startLoading();
147157
assemble()
148-
.catch((e) => setOutput([{ program: "internal", line: e, fd: "stderr" }]))
158+
.catch((e) => {
159+
console.error(e);
160+
setOutput([
161+
{
162+
program: "internal",
163+
line:
164+
typeof e === "string"
165+
? e
166+
: e instanceof Error
167+
? String(e)
168+
: JSON.stringify(e),
169+
fd: "stderr",
170+
},
171+
]);
172+
})
149173
.finally(stopLoading);
150174
}, [assemble, startLoading, stopLoading]);
151175

frontend/src/pages/DisassemblerPage.tsx

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ export default function DisassemblerPage(props: StackProps) {
7979
if (formattedInput !== undefined) {
8080
setOutput([]);
8181
setInputBinary(
82-
new Uint8Array(formattedInput.split(/\s/g).map((x) => parseInt(x, 16))),
82+
new Uint8Array(
83+
formattedInput.split(/\s/g).map((x) => Number.parseInt(x, 16)),
84+
),
8385
);
8486
} else {
8587
setOutput([
@@ -121,7 +123,7 @@ export default function DisassemblerPage(props: StackProps) {
121123
b: selectedProcessorBits,
122124
});
123125

124-
const objDumpArgs = ["-w", "-d", `--adjust-vma=0`, "-b", bfdName];
126+
const objDumpArgs = ["-w", "-d", "--adjust-vma=0", "-b", bfdName];
125127
if (!showByte) objDumpArgs.push("--no-show-raw-insn");
126128
if (showIntelSyntax) objDumpArgs.push("-M", "intel");
127129
setObjDumpParamString(shlex.join(objDumpArgs));
@@ -166,13 +168,14 @@ export default function DisassemblerPage(props: StackProps) {
166168
const disassemble = useCallback(async () => {
167169
if (!objDumpParams || !objCopyParams || !inputBinary?.length) return;
168170

169-
const objdump = await loader("objdump"),
170-
objcopy = await loader("objcopy");
171+
const objdump = await loader("objdump");
172+
const objcopy = await loader("objcopy");
171173

172174
const output = [] as ExecutionOutput[];
173-
const logErr = (line: string) => (
174-
output.push({ fd: "stderr", program: "internal", line }), output
175-
);
175+
const logErr = (line: string) => {
176+
output.push({ fd: "stderr", program: "internal", line });
177+
return output;
178+
};
176179

177180
let copiedBinary = undefined as Uint8Array | undefined;
178181
await objcopy({
@@ -181,14 +184,24 @@ export default function DisassemblerPage(props: StackProps) {
181184
printErr: (line) =>
182185
output.push({ fd: "stderr", program: "objcopy", line }),
183186
preRun: [(m) => m.FS.writeFile("/tmp/a.out", inputBinary)],
184-
postRun: [(m) => (copiedBinary = m.FS.readFile("/tmp/a.bin"))],
187+
postRun: [
188+
(m) => {
189+
try {
190+
copiedBinary = m.FS.readFile("/tmp/a.bin");
191+
} catch (e) {
192+
return logErr(
193+
`objcopy failed to copy the binary: ${JSON.stringify(e)}`,
194+
);
195+
}
196+
},
197+
],
185198
});
186199
if (!copiedBinary) return logErr("objcopy failed to copy the binary.");
187200

188201
let dumpStdout = "";
189202
await objdump({
190203
arguments: [...objDumpParams, "/tmp/a.out"],
191-
print: (line) => (dumpStdout += line + "\n"),
204+
print: (line) => (dumpStdout += `${line}\n`),
192205
printErr: (line) =>
193206
output.push({ fd: "stderr", program: "objdump", line }),
194207
preRun: [(m) => m.FS.writeFile("/tmp/a.out", copiedBinary!)],

packages/binutils/build/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM emscripten/emsdk:3.1.74 AS builder
1+
FROM emscripten/emsdk:4.0.6 AS builder
22

33
RUN apt-get update && \
44
apt-get install -y git bison flex texinfo --no-install-recommends && \

packages/gas/build/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM emscripten/emsdk:3.1.74 AS builder
1+
FROM emscripten/emsdk:4.0.6 AS builder
22

33
RUN apt-get update && \
44
apt-get install -y git bison flex texinfo parallel --no-install-recommends && \

0 commit comments

Comments
 (0)