From 666b9f8f7b0c17696139b3a42c51ad39f1bfa5d8 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Tue, 24 Mar 2020 10:52:45 +0100 Subject: [PATCH] Add tests for purging symbols --- test/asm/purge-refs.asm | 13 +++++++++++++ test/asm/purge-refs.err | 3 +++ test/asm/purge-refs.out | 0 test/asm/purge.asm | 13 +++++++++++++ test/asm/purge.err | 3 +++ test/asm/purge.out | 0 6 files changed, 32 insertions(+) create mode 100644 test/asm/purge-refs.asm create mode 100644 test/asm/purge-refs.err create mode 100644 test/asm/purge-refs.out create mode 100644 test/asm/purge.asm create mode 100644 test/asm/purge.err create mode 100644 test/asm/purge.out diff --git a/test/asm/purge-refs.asm b/test/asm/purge-refs.asm new file mode 100644 index 00000000..74dd56c6 --- /dev/null +++ b/test/asm/purge-refs.asm @@ -0,0 +1,13 @@ + +SECTION "floating purging", ROM0 + +Floating: + db Floating + PURGE Floating ; This used to cause a use-after-free + ; To increase the chances of the data being re-allocated, it's not last + +SECTION "fixed purging", ROM0[0] + +Fixed: + db Fixed + PURGE Fixed ; Can work, it's a constant diff --git a/test/asm/purge-refs.err b/test/asm/purge-refs.err new file mode 100644 index 00000000..8ad27dec --- /dev/null +++ b/test/asm/purge-refs.err @@ -0,0 +1,3 @@ +ERROR: purge-refs.asm(6): + Symbol "Floating" is referenced and thus cannot be purged +error: Assembly aborted (1 errors)! diff --git a/test/asm/purge-refs.out b/test/asm/purge-refs.out new file mode 100644 index 00000000..e69de29b diff --git a/test/asm/purge.asm b/test/asm/purge.asm new file mode 100644 index 00000000..1552cea0 --- /dev/null +++ b/test/asm/purge.asm @@ -0,0 +1,13 @@ + +SECTION "purging", ROM0 + +Label: + PURGE Label +Label: + + db Referenced + PURGE Referenced ; Should fail + +Exported:: + PURGE Exported +Exported:: diff --git a/test/asm/purge.err b/test/asm/purge.err new file mode 100644 index 00000000..74f81e69 --- /dev/null +++ b/test/asm/purge.err @@ -0,0 +1,3 @@ +ERROR: purge.asm(9): + Symbol "Referenced" is referenced and thus cannot be purged +error: Assembly aborted (1 errors)! diff --git a/test/asm/purge.out b/test/asm/purge.out new file mode 100644 index 00000000..e69de29b