syslinux: fix build on gcc10

This commit is contained in:
Lucas Ransan 2020-12-27 10:39:41 +01:00 committed by Frederik Rietdijk
parent 97a279c71d
commit 68a4db3446
3 changed files with 35 additions and 3 deletions

View file

@ -47,6 +47,7 @@ stdenv.mkDerivation {
url = mkURL "26f0e7b2" "0018-prevent-pow-optimization.patch";
sha256 = "1c8g0jz5yj9a0rsmryx9vdjsw4hw8mjfcg05c9pmyjg85w3dfp3m";
})
./gcc10.patch
];
postPatch = ''

View file

@ -0,0 +1,33 @@
diff --git a/dos/string.h b/dos/string.h
index f648de2..a502132 100644
--- a/dos/string.h
+++ b/dos/string.h
@@ -5,12 +5,13 @@
#ifndef _STRING_H
#define _STRING_H
+#include <stddef.h>
+
/* Standard routines */
#define memcpy(a,b,c) __builtin_memcpy(a,b,c)
#define memmove(a,b,c) __builtin_memmove(a,b,c)
#define memset(a,b,c) __builtin_memset(a,b,c)
#define strcpy(a,b) __builtin_strcpy(a,b)
-#define strlen(a) __builtin_strlen(a)
/* This only returns true or false */
static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n)
@@ -21,6 +22,13 @@ static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n)
return rv;
}
+static inline size_t strlen(const char *s)
+{
+ size_t len = 0;
+ while (*s++) len++;
+ return len;
+}
+
extern char *strchr(const char *s, int c);
#endif /* _STRING_H */

View file

@ -19326,9 +19326,7 @@ in
sysklogd = callPackage ../os-specific/linux/sysklogd { };
syslinux = callPackage ../os-specific/linux/syslinux {
stdenv = gcc9Stdenv; # Fails with "undefined reference to `strlen'" on gcc10
};
syslinux = callPackage ../os-specific/linux/syslinux { };
sysstat = callPackage ../os-specific/linux/sysstat { };