Message ID | ZNXALiTVL/2v4YXv@waldemar-brodkorb.de |
---|---|
State | Changes Requested |
Headers | show |
Series | [PATCH/next] package/glibc: enable for m68k with MMU | expand |
Hello Waldemar, Le 11/08/2023 à 06:59, Waldemar Brodkorb a écrit : > For qemu-system-m68k with emulates Q800 machine we need to add a patch > for glibc to let it compile and run on m68k cpu m68040. > See here for original author of the patches and discussions about the issue: > https://sourceware.org/bugzilla/show_bug.cgi?id=30740 We have updated glibc to 2.38 but some of theses changes are not yet available since there were merged for 2.39: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b85880633f69b737050c22eede858f8c13bb2248 Can you resend with upstream patch backported to glibc 2.38? I'm marking this patch as changes requested. Best regards, Romain > > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> > --- > ...-and-runtime-issues-targeting-m68k-m.patch | 261 ++++++++++++++++++ > package/glibc/Config.in | 1 + > 2 files changed, 262 insertions(+) > create mode 100644 package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch > > diff --git a/package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch b/package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch > new file mode 100644 > index 0000000000..8ff2a8936b > --- /dev/null > +++ b/package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch > @@ -0,0 +1,261 @@ > +From c7b833c812a3e6aac9fcbceaf1e6e1700d4c994d Mon Sep 17 00:00:00 2001 > +From: Waldemar Brodkorb <wbx@openadk.org> > +Date: Fri, 11 Aug 2023 04:33:29 +0200 > +Subject: [PATCH] m68k: fix compile and runtime issues targeting m68k > + m68040 cpu > + > +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> > +Upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=30740 > +--- > + sysdeps/m68k/m680x0/bits/flt-eval-method.h | 25 --- > + sysdeps/m68k/m680x0/lshift.S | 168 --------------------- > + sysdeps/m68k/m680x0/m68020/wordcopy.S | 1 - > + sysdeps/m68k/wordcopy.c | 21 +++ > + 4 files changed, 21 insertions(+), 194 deletions(-) > + delete mode 100644 sysdeps/m68k/m680x0/bits/flt-eval-method.h > + delete mode 100644 sysdeps/m68k/m680x0/lshift.S > + delete mode 100644 sysdeps/m68k/m680x0/m68020/wordcopy.S > + create mode 100644 sysdeps/m68k/wordcopy.c > + > +diff --git a/sysdeps/m68k/m680x0/bits/flt-eval-method.h b/sysdeps/m68k/m680x0/bits/flt-eval-method.h > +deleted file mode 100644 > +index bbee583a4f..0000000000 > +--- a/sysdeps/m68k/m680x0/bits/flt-eval-method.h > ++++ /dev/null > +@@ -1,25 +0,0 @@ > +-/* Define __GLIBC_FLT_EVAL_METHOD. M68K version. > +- Copyright (C) 2016-2023 Free Software Foundation, Inc. > +- This file is part of the GNU C Library. > +- > +- The GNU C Library is free software; you can redistribute it and/or > +- modify it under the terms of the GNU Lesser General Public > +- License as published by the Free Software Foundation; either > +- version 2.1 of the License, or (at your option) any later version. > +- > +- The GNU C Library is distributed in the hope that it will be useful, > +- but WITHOUT ANY WARRANTY; without even the implied warranty of > +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +- Lesser General Public License for more details. > +- > +- You should have received a copy of the GNU Lesser General Public > +- License along with the GNU C Library; if not, see > +- <https://www.gnu.org/licenses/>. */ > +- > +-#ifndef _MATH_H > +-# error "Never use <bits/flt-eval-method.h> directly; include <math.h> instead." > +-#endif > +- > +-/* The m68k FPUs evaluate all values in the 96-bit floating-point > +- format which is also available for the user as 'long double'. */ > +-#define __GLIBC_FLT_EVAL_METHOD 2 > +diff --git a/sysdeps/m68k/m680x0/lshift.S b/sysdeps/m68k/m680x0/lshift.S > +deleted file mode 100644 > +index 2aee10348e..0000000000 > +--- a/sysdeps/m68k/m680x0/lshift.S > ++++ /dev/null > +@@ -1,168 +0,0 @@ > +-/* mc68020 __mpn_lshift -- Shift left a low-level natural-number integer. > +- > +-Copyright (C) 1996-2023 Free Software Foundation, Inc. > +- > +-This file is part of the GNU MP Library. > +- > +-The GNU MP Library is free software; you can redistribute it and/or modify > +-it under the terms of the GNU Lesser General Public License as published by > +-the Free Software Foundation; either version 2.1 of the License, or (at your > +-option) any later version. > +- > +-The GNU MP Library is distributed in the hope that it will be useful, but > +-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > +-or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public > +-License for more details. > +- > +-You should have received a copy of the GNU Lesser General Public License > +-along with the GNU MP Library. If not, see <https://www.gnu.org/licenses/>. */ > +- > +-/* > +- INPUT PARAMETERS > +- res_ptr (sp + 4) > +- s_ptr (sp + 8) > +- s_size (sp + 16) > +- cnt (sp + 12) > +-*/ > +- > +-#include "sysdep.h" > +-#include "asm-syntax.h" > +- > +-#define res_ptr a1 > +-#define s_ptr a0 > +-#define s_size d6 > +-#define cnt d4 > +- > +- TEXT > +-ENTRY(__mpn_lshift) > +- > +-/* Save used registers on the stack. */ > +- moveml R(d2)-R(d6)/R(a2),MEM_PREDEC(sp) > +- cfi_adjust_cfa_offset (6*4) > +- cfi_rel_offset (R(d2), 0) > +- cfi_rel_offset (R(d3), 4) > +- cfi_rel_offset (R(d4), 8) > +- cfi_rel_offset (R(d5), 12) > +- cfi_rel_offset (R(d6), 16) > +- cfi_rel_offset (R(a2), 20) > +- > +-/* Copy the arguments to registers. */ > +- movel MEM_DISP(sp,28),R(res_ptr) > +- movel MEM_DISP(sp,32),R(s_ptr) > +- movel MEM_DISP(sp,36),R(s_size) > +- movel MEM_DISP(sp,40),R(cnt) > +- > +- moveql #1,R(d5) > +- cmpl R(d5),R(cnt) > +- bne L(Lnormal) > +- cmpl R(s_ptr),R(res_ptr) > +- bls L(Lspecial) /* jump if s_ptr >= res_ptr */ > +-#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) > +- lea MEM_INDX1(s_ptr,s_size,l,4),R(a2) > +-#else /* not mc68020 */ > +- movel R(s_size),R(d0) > +- asll #2,R(d0) > +- lea MEM_INDX(s_ptr,d0,l),R(a2) > +-#endif > +- cmpl R(res_ptr),R(a2) > +- bls L(Lspecial) /* jump if res_ptr >= s_ptr + s_size */ > +- > +-L(Lnormal:) > +- moveql #32,R(d5) > +- subl R(cnt),R(d5) > +- > +-#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) > +- lea MEM_INDX1(s_ptr,s_size,l,4),R(s_ptr) > +- lea MEM_INDX1(res_ptr,s_size,l,4),R(res_ptr) > +-#else /* not mc68000 */ > +- movel R(s_size),R(d0) > +- asll #2,R(d0) > +- addl R(s_size),R(s_ptr) > +- addl R(s_size),R(res_ptr) > +-#endif > +- movel MEM_PREDEC(s_ptr),R(d2) > +- movel R(d2),R(d0) > +- lsrl R(d5),R(d0) /* compute carry limb */ > +- > +- lsll R(cnt),R(d2) > +- movel R(d2),R(d1) > +- subql #1,R(s_size) > +- beq L(Lend) > +- lsrl #1,R(s_size) > +- bcs L(L1) > +- subql #1,R(s_size) > +- > +-L(Loop:) > +- movel MEM_PREDEC(s_ptr),R(d2) > +- movel R(d2),R(d3) > +- lsrl R(d5),R(d3) > +- orl R(d3),R(d1) > +- movel R(d1),MEM_PREDEC(res_ptr) > +- lsll R(cnt),R(d2) > +-L(L1:) > +- movel MEM_PREDEC(s_ptr),R(d1) > +- movel R(d1),R(d3) > +- lsrl R(d5),R(d3) > +- orl R(d3),R(d2) > +- movel R(d2),MEM_PREDEC(res_ptr) > +- lsll R(cnt),R(d1) > +- > +- dbf R(s_size),L(Loop) > +- subl #0x10000,R(s_size) > +- bcc L(Loop) > +- > +-L(Lend:) > +- movel R(d1),MEM_PREDEC(res_ptr) /* store least significant limb */ > +- > +-/* Restore used registers from stack frame. */ > +- moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) > +- cfi_remember_state > +- cfi_adjust_cfa_offset (-6*4) > +- cfi_restore (R(d2)) > +- cfi_restore (R(d3)) > +- cfi_restore (R(d4)) > +- cfi_restore (R(d5)) > +- cfi_restore (R(d6)) > +- cfi_restore (R(a2)) > +- rts > +- > +-/* We loop from least significant end of the arrays, which is only > +- permissible if the source and destination don't overlap, since the > +- function is documented to work for overlapping source and destination. */ > +- > +- cfi_restore_state > +-L(Lspecial:) > +- clrl R(d0) /* initialize carry */ > +- eorw #1,R(s_size) > +- lsrl #1,R(s_size) > +- bcc L(LL1) > +- subql #1,R(s_size) > +- > +-L(LLoop:) > +- movel MEM_POSTINC(s_ptr),R(d2) > +- addxl R(d2),R(d2) > +- movel R(d2),MEM_POSTINC(res_ptr) > +-L(LL1:) > +- movel MEM_POSTINC(s_ptr),R(d2) > +- addxl R(d2),R(d2) > +- movel R(d2),MEM_POSTINC(res_ptr) > +- > +- dbf R(s_size),L(LLoop) > +- addxl R(d0),R(d0) /* save cy in lsb */ > +- subl #0x10000,R(s_size) > +- bcs L(LLend) > +- lsrl #1,R(d0) /* restore cy */ > +- bra L(LLoop) > +- > +-L(LLend:) > +-/* Restore used registers from stack frame. */ > +- moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) > +- cfi_adjust_cfa_offset (-6*4) > +- cfi_restore (R(d2)) > +- cfi_restore (R(d3)) > +- cfi_restore (R(d4)) > +- cfi_restore (R(d5)) > +- cfi_restore (R(d6)) > +- cfi_restore (R(a2)) > +- rts > +-END(__mpn_lshift) > +diff --git a/sysdeps/m68k/m680x0/m68020/wordcopy.S b/sysdeps/m68k/m680x0/m68020/wordcopy.S > +deleted file mode 100644 > +index 4fb1a4518f..0000000000 > +--- a/sysdeps/m68k/m680x0/m68020/wordcopy.S > ++++ /dev/null > +@@ -1 +0,0 @@ > +-/* Empty, not needed. */ > +diff --git a/sysdeps/m68k/wordcopy.c b/sysdeps/m68k/wordcopy.c > +new file mode 100644 > +index 0000000000..1ee1149add > +--- /dev/null > ++++ b/sysdeps/m68k/wordcopy.c > +@@ -0,0 +1,21 @@ > ++/* Definitions for memory copy functions. Motorola 68020 version. > ++ Copyright (C) 2023 Free Software Foundation, Inc. > ++ This file is part of the GNU C Library. > ++ > ++ The GNU C Library is free software; you can redistribute it and/or > ++ modify it under the terms of the GNU Lesser General Public > ++ License as published by the Free Software Foundation; either > ++ version 2.1 of the License, or (at your option) any later version. > ++ > ++ The GNU C Library is distributed in the hope that it will be useful, > ++ but WITHOUT ANY WARRANTY; without even the implied warranty of > ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > ++ Lesser General Public License for more details. > ++ > ++ You should have received a copy of the GNU Lesser General Public > ++ License along with the GNU C Library. If not, see > ++ <https://www.gnu.org/licenses/>. */ > ++ > ++#if !defined(__mc68020__) && !defined(mc68020) > ++#include <string/wordcopy.c> > ++#endif > +-- > +2.39.2 > + > diff --git a/package/glibc/Config.in b/package/glibc/Config.in > index 71c50504ac..bfe83ab6f1 100644 > --- a/package/glibc/Config.in > +++ b/package/glibc/Config.in > @@ -5,6 +5,7 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS > default y if BR2_aarch64 > default y if BR2_aarch64_be > default y if BR2_i386 > + default y if BR2_m68k_m68k > default y if BR2_mips > default y if BR2_mipsel > default y if BR2_mips64
diff --git a/package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch b/package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch new file mode 100644 index 0000000000..8ff2a8936b --- /dev/null +++ b/package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch @@ -0,0 +1,261 @@ +From c7b833c812a3e6aac9fcbceaf1e6e1700d4c994d Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb <wbx@openadk.org> +Date: Fri, 11 Aug 2023 04:33:29 +0200 +Subject: [PATCH] m68k: fix compile and runtime issues targeting m68k + m68040 cpu + +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> +Upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=30740 +--- + sysdeps/m68k/m680x0/bits/flt-eval-method.h | 25 --- + sysdeps/m68k/m680x0/lshift.S | 168 --------------------- + sysdeps/m68k/m680x0/m68020/wordcopy.S | 1 - + sysdeps/m68k/wordcopy.c | 21 +++ + 4 files changed, 21 insertions(+), 194 deletions(-) + delete mode 100644 sysdeps/m68k/m680x0/bits/flt-eval-method.h + delete mode 100644 sysdeps/m68k/m680x0/lshift.S + delete mode 100644 sysdeps/m68k/m680x0/m68020/wordcopy.S + create mode 100644 sysdeps/m68k/wordcopy.c + +diff --git a/sysdeps/m68k/m680x0/bits/flt-eval-method.h b/sysdeps/m68k/m680x0/bits/flt-eval-method.h +deleted file mode 100644 +index bbee583a4f..0000000000 +--- a/sysdeps/m68k/m680x0/bits/flt-eval-method.h ++++ /dev/null +@@ -1,25 +0,0 @@ +-/* Define __GLIBC_FLT_EVAL_METHOD. M68K version. +- Copyright (C) 2016-2023 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <https://www.gnu.org/licenses/>. */ +- +-#ifndef _MATH_H +-# error "Never use <bits/flt-eval-method.h> directly; include <math.h> instead." +-#endif +- +-/* The m68k FPUs evaluate all values in the 96-bit floating-point +- format which is also available for the user as 'long double'. */ +-#define __GLIBC_FLT_EVAL_METHOD 2 +diff --git a/sysdeps/m68k/m680x0/lshift.S b/sysdeps/m68k/m680x0/lshift.S +deleted file mode 100644 +index 2aee10348e..0000000000 +--- a/sysdeps/m68k/m680x0/lshift.S ++++ /dev/null +@@ -1,168 +0,0 @@ +-/* mc68020 __mpn_lshift -- Shift left a low-level natural-number integer. +- +-Copyright (C) 1996-2023 Free Software Foundation, Inc. +- +-This file is part of the GNU MP Library. +- +-The GNU MP Library is free software; you can redistribute it and/or modify +-it under the terms of the GNU Lesser General Public License as published by +-the Free Software Foundation; either version 2.1 of the License, or (at your +-option) any later version. +- +-The GNU MP Library is distributed in the hope that it will be useful, but +-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +-or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +-License for more details. +- +-You should have received a copy of the GNU Lesser General Public License +-along with the GNU MP Library. If not, see <https://www.gnu.org/licenses/>. */ +- +-/* +- INPUT PARAMETERS +- res_ptr (sp + 4) +- s_ptr (sp + 8) +- s_size (sp + 16) +- cnt (sp + 12) +-*/ +- +-#include "sysdep.h" +-#include "asm-syntax.h" +- +-#define res_ptr a1 +-#define s_ptr a0 +-#define s_size d6 +-#define cnt d4 +- +- TEXT +-ENTRY(__mpn_lshift) +- +-/* Save used registers on the stack. */ +- moveml R(d2)-R(d6)/R(a2),MEM_PREDEC(sp) +- cfi_adjust_cfa_offset (6*4) +- cfi_rel_offset (R(d2), 0) +- cfi_rel_offset (R(d3), 4) +- cfi_rel_offset (R(d4), 8) +- cfi_rel_offset (R(d5), 12) +- cfi_rel_offset (R(d6), 16) +- cfi_rel_offset (R(a2), 20) +- +-/* Copy the arguments to registers. */ +- movel MEM_DISP(sp,28),R(res_ptr) +- movel MEM_DISP(sp,32),R(s_ptr) +- movel MEM_DISP(sp,36),R(s_size) +- movel MEM_DISP(sp,40),R(cnt) +- +- moveql #1,R(d5) +- cmpl R(d5),R(cnt) +- bne L(Lnormal) +- cmpl R(s_ptr),R(res_ptr) +- bls L(Lspecial) /* jump if s_ptr >= res_ptr */ +-#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) +- lea MEM_INDX1(s_ptr,s_size,l,4),R(a2) +-#else /* not mc68020 */ +- movel R(s_size),R(d0) +- asll #2,R(d0) +- lea MEM_INDX(s_ptr,d0,l),R(a2) +-#endif +- cmpl R(res_ptr),R(a2) +- bls L(Lspecial) /* jump if res_ptr >= s_ptr + s_size */ +- +-L(Lnormal:) +- moveql #32,R(d5) +- subl R(cnt),R(d5) +- +-#if (defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) +- lea MEM_INDX1(s_ptr,s_size,l,4),R(s_ptr) +- lea MEM_INDX1(res_ptr,s_size,l,4),R(res_ptr) +-#else /* not mc68000 */ +- movel R(s_size),R(d0) +- asll #2,R(d0) +- addl R(s_size),R(s_ptr) +- addl R(s_size),R(res_ptr) +-#endif +- movel MEM_PREDEC(s_ptr),R(d2) +- movel R(d2),R(d0) +- lsrl R(d5),R(d0) /* compute carry limb */ +- +- lsll R(cnt),R(d2) +- movel R(d2),R(d1) +- subql #1,R(s_size) +- beq L(Lend) +- lsrl #1,R(s_size) +- bcs L(L1) +- subql #1,R(s_size) +- +-L(Loop:) +- movel MEM_PREDEC(s_ptr),R(d2) +- movel R(d2),R(d3) +- lsrl R(d5),R(d3) +- orl R(d3),R(d1) +- movel R(d1),MEM_PREDEC(res_ptr) +- lsll R(cnt),R(d2) +-L(L1:) +- movel MEM_PREDEC(s_ptr),R(d1) +- movel R(d1),R(d3) +- lsrl R(d5),R(d3) +- orl R(d3),R(d2) +- movel R(d2),MEM_PREDEC(res_ptr) +- lsll R(cnt),R(d1) +- +- dbf R(s_size),L(Loop) +- subl #0x10000,R(s_size) +- bcc L(Loop) +- +-L(Lend:) +- movel R(d1),MEM_PREDEC(res_ptr) /* store least significant limb */ +- +-/* Restore used registers from stack frame. */ +- moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) +- cfi_remember_state +- cfi_adjust_cfa_offset (-6*4) +- cfi_restore (R(d2)) +- cfi_restore (R(d3)) +- cfi_restore (R(d4)) +- cfi_restore (R(d5)) +- cfi_restore (R(d6)) +- cfi_restore (R(a2)) +- rts +- +-/* We loop from least significant end of the arrays, which is only +- permissible if the source and destination don't overlap, since the +- function is documented to work for overlapping source and destination. */ +- +- cfi_restore_state +-L(Lspecial:) +- clrl R(d0) /* initialize carry */ +- eorw #1,R(s_size) +- lsrl #1,R(s_size) +- bcc L(LL1) +- subql #1,R(s_size) +- +-L(LLoop:) +- movel MEM_POSTINC(s_ptr),R(d2) +- addxl R(d2),R(d2) +- movel R(d2),MEM_POSTINC(res_ptr) +-L(LL1:) +- movel MEM_POSTINC(s_ptr),R(d2) +- addxl R(d2),R(d2) +- movel R(d2),MEM_POSTINC(res_ptr) +- +- dbf R(s_size),L(LLoop) +- addxl R(d0),R(d0) /* save cy in lsb */ +- subl #0x10000,R(s_size) +- bcs L(LLend) +- lsrl #1,R(d0) /* restore cy */ +- bra L(LLoop) +- +-L(LLend:) +-/* Restore used registers from stack frame. */ +- moveml MEM_POSTINC(sp),R(d2)-R(d6)/R(a2) +- cfi_adjust_cfa_offset (-6*4) +- cfi_restore (R(d2)) +- cfi_restore (R(d3)) +- cfi_restore (R(d4)) +- cfi_restore (R(d5)) +- cfi_restore (R(d6)) +- cfi_restore (R(a2)) +- rts +-END(__mpn_lshift) +diff --git a/sysdeps/m68k/m680x0/m68020/wordcopy.S b/sysdeps/m68k/m680x0/m68020/wordcopy.S +deleted file mode 100644 +index 4fb1a4518f..0000000000 +--- a/sysdeps/m68k/m680x0/m68020/wordcopy.S ++++ /dev/null +@@ -1 +0,0 @@ +-/* Empty, not needed. */ +diff --git a/sysdeps/m68k/wordcopy.c b/sysdeps/m68k/wordcopy.c +new file mode 100644 +index 0000000000..1ee1149add +--- /dev/null ++++ b/sysdeps/m68k/wordcopy.c +@@ -0,0 +1,21 @@ ++/* Definitions for memory copy functions. Motorola 68020 version. ++ Copyright (C) 2023 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library. If not, see ++ <https://www.gnu.org/licenses/>. */ ++ ++#if !defined(__mc68020__) && !defined(mc68020) ++#include <string/wordcopy.c> ++#endif +-- +2.39.2 + diff --git a/package/glibc/Config.in b/package/glibc/Config.in index 71c50504ac..bfe83ab6f1 100644 --- a/package/glibc/Config.in +++ b/package/glibc/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 + default y if BR2_m68k_m68k default y if BR2_mips default y if BR2_mipsel default y if BR2_mips64
For qemu-system-m68k with emulates Q800 machine we need to add a patch for glibc to let it compile and run on m68k cpu m68040. See here for original author of the patches and discussions about the issue: https://sourceware.org/bugzilla/show_bug.cgi?id=30740 Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> --- ...-and-runtime-issues-targeting-m68k-m.patch | 261 ++++++++++++++++++ package/glibc/Config.in | 1 + 2 files changed, 262 insertions(+) create mode 100644 package/glibc/0001-m68k-fix-compile-and-runtime-issues-targeting-m68k-m.patch