Add a patch to gcc to expand switch-case to an if-else sequence (from buildroot).
1 See http://sources.redhat.com/ml/libc-alpha/2004-05/msg00110.html
3 Both his patches pulled into this file
6 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Assembler messages:
7 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_startproc'
8 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_def_cfa_offset'
9 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: missing ')'
10 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: syntax error
11 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_remember_state'
12 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_restore'
13 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_def_cfa_offset'
14 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_restore_state'
15 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_restore'
16 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:28: Error: unknown opcode `cfi_def_cfa_offset'
17 ../sysdeps/unix/sysv/linux/alpha/sigsuspend.S:30: Error: unknown opcode `cfi_endproc'
18 make[2]: *** [/usr/src/crosstool/crosstool-0.28-rc14/build/alpha-linux/gcc-3.4.0-glibc-2.3.2/build-glibc/signal/sigsuspend.o] Error 1
20 when building with binutils-2.15.90.0.3 and gcc-3.4.0
22 --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h.orig 2004-05-13 00:33:54.000000000 -0400
23 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2004-05-13 00:34:19.000000000 -0400
26 .type name, @function; \
35 __LABEL($pseudo_cancel) \
37 - cfi_def_cfa_offset(64); \
38 + .cfi_def_cfa_offset(64); \
40 - cfi_offset(ra, -64); \
41 + .cfi_offset ra, -64; \
49 - cfi_remember_state; \
51 - cfi_def_cfa_offset(0); \
52 + .cfi_remember_state; \
54 + .cfi_def_cfa_offset(0); \
56 - cfi_restore_state; \
57 + .cfi_restore_state; \
58 __LABEL($multi_error) \
64 - cfi_def_cfa_offset(0); \
66 + .cfi_def_cfa_offset(0); \
67 __LABEL($syscall_error) \
68 SYSCALL_ERROR_HANDLER; \
72 # define PSEUDO_END(sym) \
78 # define SAVE_ARGS_0 /* Nothing. */
80 --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S.orig 2004-05-13 01:47:46.000000000 -0400
81 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2004-05-13 01:48:17.000000000 -0400
84 .type __vfork, @function
92 fork and vfork object files. */
95 - cfi_adjust_cfa_offset(16)
96 + .cfi_adjust_cfa_offset(16)
100 jsr ra, HIDDEN_JUMPTARGET (__fork)
105 - cfi_adjust_cfa_offset(-16)
107 + .cfi_adjust_cfa_offset(-16)
111 SYSCALL_ERROR_HANDLER
116 .size __vfork, .-__vfork
118 libc_hidden_def (__vfork)