Bug#709992: eglibc: FTBFS: Assembler messages: Error: bad register expression
Package: src:eglibc
Followup-For: Bug #709992
Hi!
I have browsed the code a bit and looked at the differences
between eglibc 2.13 (which builds on m68k) and 2.17 and it
turns out that m68k-helpers.S had two separate versions
for Coldfire and real m68k CPUs in 2.13 while the code was
merged in 2.17.
2.13:
glaubitz@z6:..linux/m68k> pwd
/home/glaubitz/tmp/eglibc-2.13/ports/sysdeps/unix/sysv/linux/m68k
glaubitz@z6:..linux/m68k> ls -l */m68k-helpers.S
-rw-r--r-- 1 glaubitz glaubitz 3474 Mar 13 2010 coldfire/m68k-helpers.S
-rw-r--r-- 1 glaubitz glaubitz 3433 Mar 13 2010 m680x0/m68k-helpers.S
glaubitz@z6:..linux/m68k>
2.17:
glaubitz@z6:..linux/m68k> pwd
/home/glaubitz/tmp/eglibc-2.17/ports/sysdeps/unix/sysv/linux/m68k
glaubitz@z6:..linux/m68k> ls -l m68k-helpers.S
-rw-r--r-- 1 glaubitz glaubitz 3251 Mar 10 2012 m68k-helpers.S
glaubitz@z6:..linux/m68k>
So it might be worth looking into what has been changed for the
original m68k CPUs in m68k-helper.S:
glaubitz@z6:~> diff -u /home/glaubitz/tmp/eglibc-2.13/ports/sysdeps/unix/sysv/linux/m68k/m680x0/m68k-helpers.S /home/glaubitz/tmp/eglibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/m68k-helpers.S
--- /home/glaubitz/tmp/eglibc-2.13/ports/sysdeps/unix/sysv/linux/m68k/m680x0/m68k-helpers.S 2010-03-13 19:20:12.000000000 +0100
+++ /home/glaubitz/tmp/eglibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/m68k-helpers.S 2012-03-10 02:14:00.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2010 Free Software Foundation, Inc.
+/* Copyright (C) 2010, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Maxim Kuvyrkov <maxim@codesourcery.com>, 2010.
@@ -30,9 +30,8 @@
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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
#include <sysdep.h>
#include <bits/m68k-vdso.h>
@@ -41,12 +40,10 @@
.hidden __vdso_read_tp_stub
ENTRY (__vdso_read_tp_stub)
- cfi_startproc
move.l #__NR_get_thread_area, %d0
trap #0
move.l %d0, %a0
rts
- cfi_endproc
END (__vdso_read_tp_stub)
# ifdef SHARED
@@ -59,11 +56,10 @@
.hidden __m68k_read_tp
# endif
ENTRY (__m68k_read_tp)
- cfi_startproc
- lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a0
+ LOAD_GOT (%a0)
move.l M68K_VDSO_SYMBOL (__vdso_read_tp)@GOT(%a0), %a0
- jmp ([%a0])
- cfi_endproc
+ move.l (%a0), %a0
+ jmp (%a0)
END (__m68k_read_tp)
/* The following two stubs are for macros in atomic.h, they can't
@@ -71,7 +67,6 @@
.hidden __vdso_atomic_cmpxchg_32_stub
ENTRY (__vdso_atomic_cmpxchg_32_stub)
- cfi_startproc
move.l %d2, -(%sp)
cfi_adjust_cfa_offset (4)
cfi_rel_offset (%d2, 0)
@@ -82,12 +77,10 @@
cfi_adjust_cfa_offset (-4)
cfi_restore (%d2)
rts
- cfi_endproc
END (__vdso_atomic_cmpxchg_32_stub)
.hidden __vdso_atomic_barrier_stub
ENTRY (__vdso_atomic_barrier_stub)
- cfi_startproc
move.l %d0, -(%sp)
cfi_adjust_cfa_offset (4)
move.l #SYS_ify (atomic_barrier), %d0
@@ -95,7 +88,6 @@
move.l (%sp)+, %d0
cfi_adjust_cfa_offset (-4)
rts
- cfi_endproc
END (__vdso_atomic_barrier_stub)
# else /* !SHARED */
/* If the vDSO is not available, use a syscall to get TP. */
glaubitz@z6:~>
So, 2.17 had the cfi_startproc and cfi_endproc macros removed.
Any comment on that?
Cheers,
Adrian
Reply to: