syslinux/syslinux-4.04-iso9660.diff

39 lines
1.1 KiB
Diff

diff --git a/core/fs/iso9660/iso9660.c b/core/fs/iso9660/iso9660.c
index 3cd3ac4..9bbc299 100644
--- a/core/fs/iso9660/iso9660.c
+++ b/core/fs/iso9660/iso9660.c
@@ -228,14 +228,25 @@ static int iso_readdir(struct file *file, struct dirent *dirent)
/* Load the config file, return 1 if failed, or 0 */
static int iso_load_config(void)
{
- static const char *search_directories[] = {
- "/boot/isolinux",
- "/isolinux",
- "/boot/syslinux",
- "/syslinux",
- "/",
- NULL
- };
+ /*
+ * Put search_directories[] to different section so it
+ * won't be compressed (and we can patch it later).
+ */
+ __asm__(
+ ".section .data16\n"
+ ".s1: .ascii \"/boot\"\n"
+ ".s2: .string \"/isolinux\"\n"
+ ".fill 64, 1, 0\n"
+ ".s3: .ascii \"/boot\"\n"
+ ".s4: .string \"/syslinux\"\n"
+ ".s5: .string \"/\"\n"
+ ".align 4\n"
+ "search_directories:\n"
+ ".long .s1, .s2, .s3, .s4, .s5, 0\n"
+ ".text\n"
+ );
+ extern const char *search_directories[];
+
static const char *filenames[] = {
"isolinux.cfg",
"syslinux.cfg",