* [RFC][PATCH] [ia64] Raise minimum binutils version and remove
@ 2010-10-04 2:20 Ben Hutchings
2010-10-04 18:52 ` Tony Luck
2010-10-10 21:00 ` Ben Hutchings
0 siblings, 2 replies; 3+ messages in thread
From: Ben Hutchings @ 2010-10-04 2:20 UTC (permalink / raw)
To: linux-ia64
I believe all these bugs were fixed by 2.16, and that's old enough
now that it seems reasonable to require it as a minimum version.
This is an RFC only for now since I'm not really familiar with ia64. In
Debian we've been patching these checks out for a while so that they
don't run when building OOT modules.
Ben.
---
Documentation/Changes | 2 +-
arch/ia64/Makefile | 17 +--------
arch/ia64/include/asm/asmmacro.h | 20 ++---------
arch/ia64/include/asm/gcc_intrin.h | 9 +----
arch/ia64/include/asm/percpu.h | 4 +--
arch/ia64/kernel/paravirt.c | 4 --
arch/ia64/scripts/check-gas | 15 --------
arch/ia64/scripts/check-gas-asm.S | 2 -
arch/ia64/scripts/check-model.c | 1 -
arch/ia64/scripts/check-segrel.S | 4 --
arch/ia64/scripts/check-segrel.lds | 12 ------
arch/ia64/scripts/check-serialize.S | 2 -
arch/ia64/scripts/check-text-align.S | 6 ---
arch/ia64/scripts/toolchain-flags | 53 ----------------------------
arch/ia64/scripts/unwcheck.py | 64 ----------------------------------
15 files changed, 8 insertions(+), 207 deletions(-)
delete mode 100755 arch/ia64/scripts/check-gas
delete mode 100644 arch/ia64/scripts/check-gas-asm.S
delete mode 100644 arch/ia64/scripts/check-model.c
delete mode 100644 arch/ia64/scripts/check-segrel.S
delete mode 100644 arch/ia64/scripts/check-segrel.lds
delete mode 100644 arch/ia64/scripts/check-serialize.S
delete mode 100644 arch/ia64/scripts/check-text-align.S
delete mode 100755 arch/ia64/scripts/toolchain-flags
delete mode 100644 arch/ia64/scripts/unwcheck.py
diff --git a/Documentation/Changes b/Documentation/Changes
index 4fb88f1..23fc499 100644
--- a/Documentation/Changes
+++ b/Documentation/Changes
@@ -30,7 +30,7 @@ isdn4k-utils.
o Gnu C 3.2 # gcc --version
o Gnu make 3.80 # make --version
-o binutils 2.12 # ld -v
+o binutils 2.12 (2.16 for ia64) # ld -v
o util-linux 2.10o # fdformat --version
o module-init-tools 0.9.10 # depmod -V
o e2fsprogs 1.41.4 # e2fsck -V
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index be7bfa1..9feddc4 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -30,17 +30,6 @@ cflags-y := -pipe $(EXTRA) -ffixed-r13 -mfixed-rangeñ2-f15,f32-f127 \
-falign-functions2 -frename-registers -fno-optimize-sibling-calls
KBUILD_CFLAGS_KERNEL := -mconstant-gp
-GAS_STATUS = $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
-KBUILD_CPPFLAGS += $(shell $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
-
-ifeq ($(GAS_STATUS),buggy)
-$(error Sorry, you need a newer version of the assember, one that is built from \
- a source-tree that post-dates 18-Dec-2002. You can find a pre-compiled \
- static binary of such an assembler at: \
- \
- ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
-endif
-
KBUILD_CFLAGS += $(cflags-y)
head-y := arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o
@@ -68,7 +57,7 @@ boot := arch/ia64/hp/sim/boot
PHONY += boot compressed check
-all: compressed unwcheck
+all: compressed
compressed: vmlinux.gz
@@ -77,9 +66,6 @@ vmlinuz: vmlinux.gz
vmlinux.gz: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $@
-unwcheck: vmlinux
- -$(Q)READELF=$(READELF) python $(srctree)/arch/ia64/scripts/unwcheck.py $<
-
archclean:
$(Q)$(MAKE) $(clean)=$(boot)
@@ -95,7 +81,6 @@ define archhelp
echo '* compressed - Build compressed kernel image'
echo ' install - Install compressed kernel image'
echo ' boot - Build vmlinux and bootloader for Ski simulator'
- echo '* unwcheck - Check vmlinux for invalid unwind info'
endef
archprepare: make_nr_irqs_h FORCE
diff --git a/arch/ia64/include/asm/asmmacro.h b/arch/ia64/include/asm/asmmacro.h
index 3ab6d75..003106b 100644
--- a/arch/ia64/include/asm/asmmacro.h
+++ b/arch/ia64/include/asm/asmmacro.h
@@ -113,23 +113,9 @@ name:
[1:] adds reg=IA64_NUM_PHYS_STACK_REG*8+8,r0; \
.xdata4 ".data..patch.phys_stack_reg", 1b-.
-/*
- * Up until early 2004, use of .align within a function caused bad unwind info.
- * TEXT_ALIGN(n) expands into ".align n" if a fixed GAS is available or into nothing
- * otherwise.
- */
-#ifdef HAVE_WORKING_TEXT_ALIGN
-# define TEXT_ALIGN(n) .align n
-#else
-# define TEXT_ALIGN(n)
-#endif
+#define TEXT_ALIGN(n) .align n
-#ifdef HAVE_SERIALIZE_DIRECTIVE
-# define dv_serialize_data .serialize.data
-# define dv_serialize_instruction .serialize.instruction
-#else
-# define dv_serialize_data
-# define dv_serialize_instruction
-#endif
+#define dv_serialize_data .serialize.data
+#define dv_serialize_instruction .serialize.instruction
#endif /* _ASM_IA64_ASMMACRO_H */
diff --git a/arch/ia64/include/asm/gcc_intrin.h b/arch/ia64/include/asm/gcc_intrin.h
index 21ddee5..18f2efb 100644
--- a/arch/ia64/include/asm/gcc_intrin.h
+++ b/arch/ia64/include/asm/gcc_intrin.h
@@ -396,13 +396,8 @@ register unsigned long ia64_r13 asm ("r13") __used;
#define ia64_srlz_i() asm volatile (";; srlz.i ;;" ::: "memory")
#define ia64_srlz_d() asm volatile (";; srlz.d" ::: "memory");
-#ifdef HAVE_SERIALIZE_DIRECTIVE
-# define ia64_dv_serialize_data() asm volatile (".serialize.data");
-# define ia64_dv_serialize_instruction() asm volatile (".serialize.instruction");
-#else
-# define ia64_dv_serialize_data()
-# define ia64_dv_serialize_instruction()
-#endif
+#define ia64_dv_serialize_data() asm volatile (".serialize.data");
+#define ia64_dv_serialize_instruction() asm volatile (".serialize.instruction");
#define ia64_nop(x) asm volatile ("nop %0"::"i"(x));
diff --git a/arch/ia64/include/asm/percpu.h b/arch/ia64/include/asm/percpu.h
index 14aa1c5..59728d3 100644
--- a/arch/ia64/include/asm/percpu.h
+++ b/arch/ia64/include/asm/percpu.h
@@ -17,9 +17,7 @@
#ifdef CONFIG_SMP
-#ifdef HAVE_MODEL_SMALL_ATTRIBUTE
-# define PER_CPU_ATTRIBUTES __attribute__((__model__ (__small__)))
-#endif
+#define PER_CPU_ATTRIBUTES __attribute__((__model__ (__small__)))
#define __my_cpu_offset __ia64_per_cpu_var(local_per_cpu_offset)
diff --git a/arch/ia64/kernel/paravirt.c b/arch/ia64/kernel/paravirt.c
index a21d7bb..e5c093a 100644
--- a/arch/ia64/kernel/paravirt.c
+++ b/arch/ia64/kernel/paravirt.c
@@ -488,9 +488,7 @@ __DEFINE_FUNC(setreg,
"cmp.eq p6, p0 = r2, r9\n"
";;\n"
"(p6) mov psr.l = r8\n"
-#ifdef HAVE_SERIALIZE_DIRECTIVE
".serialize.data\n"
-#endif
"(p6) br.cond.sptk.many b6\n"
__DEFINE_SET_REG(GP, gp)
__DEFINE_SET_REG(SP, sp)
@@ -682,9 +680,7 @@ IA64_NATIVE_PATCH_DEFINE_GET_REG(tp, tp);
__DEFINE_FUNC(set_psr_l,
";;\n"
"mov psr.l = r8\n"
-#ifdef HAVE_SERIALIZE_DIRECTIVE
".serialize.data\n"
-#endif
";;\n");
IA64_NATIVE_PATCH_DEFINE_REG(gp, gp);
diff --git a/arch/ia64/scripts/check-gas b/arch/ia64/scripts/check-gas
deleted file mode 100755
index 2499e0b..0000000
--- a/arch/ia64/scripts/check-gas
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-dir=$(dirname $0)
-CC=$1
-OBJDUMP=$2
-tmp=${TMPDIR:-/tmp}
-out=$tmp/out$$.o
-$CC -c $dir/check-gas-asm.S -o $out
-res=$($OBJDUMP -r --section .data $out | fgrep 00004 | tr -s ' ' |cut -f3 -d' ')
-rm -f $out
-if [ $res != ".text" ]; then
- echo buggy
-else
- echo good
-fi
-exit 0
diff --git a/arch/ia64/scripts/check-gas-asm.S b/arch/ia64/scripts/check-gas-asm.S
deleted file mode 100644
index 010e1d2..0000000
--- a/arch/ia64/scripts/check-gas-asm.S
+++ /dev/null
@@ -1,2 +0,0 @@
-[1:] nop 0
- .xdata4 ".data", 0, 1b-.
diff --git a/arch/ia64/scripts/check-model.c b/arch/ia64/scripts/check-model.c
deleted file mode 100644
index e1d4e86..0000000
--- a/arch/ia64/scripts/check-model.c
+++ /dev/null
@@ -1 +0,0 @@
-int __attribute__ ((__model__ (__small__))) x;
diff --git a/arch/ia64/scripts/check-segrel.S b/arch/ia64/scripts/check-segrel.S
deleted file mode 100644
index 3be4e3d..0000000
--- a/arch/ia64/scripts/check-segrel.S
+++ /dev/null
@@ -1,4 +0,0 @@
- .rodata
- data4 @segrel(start)
- .data
-start:
diff --git a/arch/ia64/scripts/check-segrel.lds b/arch/ia64/scripts/check-segrel.lds
deleted file mode 100644
index 85a0d54..0000000
--- a/arch/ia64/scripts/check-segrel.lds
+++ /dev/null
@@ -1,12 +0,0 @@
-SECTIONS {
- . = SIZEOF_HEADERS;
- .rodata : { *(.rodata) } :ro
- .note : { *(.note*) }
- . = 0xa0000;
- .data : { *(.data) } :dat
- /DISCARD/ : { *(*) }
-}
-PHDRS {
- ro PT_LOAD FILEHDR PHDRS;
- dat PT_LOAD;
-}
diff --git a/arch/ia64/scripts/check-serialize.S b/arch/ia64/scripts/check-serialize.S
deleted file mode 100644
index 0400c10..0000000
--- a/arch/ia64/scripts/check-serialize.S
+++ /dev/null
@@ -1,2 +0,0 @@
- .serialize.data
- .serialize.instruction
diff --git a/arch/ia64/scripts/check-text-align.S b/arch/ia64/scripts/check-text-align.S
deleted file mode 100644
index 03f586a..0000000
--- a/arch/ia64/scripts/check-text-align.S
+++ /dev/null
@@ -1,6 +0,0 @@
- .proc foo
- .prologue
-foo: .save rp, r2
- nop 0
- .align 64
- .endp foo
diff --git a/arch/ia64/scripts/toolchain-flags b/arch/ia64/scripts/toolchain-flags
deleted file mode 100755
index 3f0c2ad..0000000
--- a/arch/ia64/scripts/toolchain-flags
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-#
-# Check whether linker can handle cross-segment @segrel():
-#
-CPPFLAGS=""
-CC=$1
-OBJDUMP=$2
-READELF=$3
-dir=$(dirname $0)
-tmp=${TMPDIR:-/tmp}
-out=$tmp/out$$
-
-# Check whether cross-segment segment-relative relocs work fine. We need
-# that for building the gate DSO:
-
-$CC -nostdlib -static -Wl,-T$dir/check-segrel.lds $dir/check-segrel.S -o $out
-res=$($OBJDUMP --full --section .rodata $out | fgrep 000 | cut -f3 -d' ')
-rm -f $out
-if [ $res != 00000a00 ]; then
- CPPFLAGS="$CPPFLAGS -DHAVE_BUGGY_SEGREL"
- cat >&2 <<EOF
-warning: your linker cannot handle cross-segment segment-relative relocations.
- please upgrade to a newer version (it is safe to use this linker, but
- the kernel will be bigger than strictly necessary).
-EOF
-fi
-
-# Check whether .align inside a function works as expected.
-
-$CC -c $dir/check-text-align.S -o $out
-$READELF -u $out | fgrep -q 'prologue(rlen\x12)'
-res=$?
-rm -f $out
-if [ $res -eq 0 ]; then
- CPPFLAGS="$CPPFLAGS -DHAVE_WORKING_TEXT_ALIGN"
-fi
-
-if ! $CC -c $dir/check-model.c -o $out 2>&1 | grep __model__ | grep -q attrib
-then
- CPPFLAGS="$CPPFLAGS -DHAVE_MODEL_SMALL_ATTRIBUTE"
-fi
-rm -f $out
-
-# Check whether assembler supports .serialize.{data,instruction} directive.
-
-$CC -c $dir/check-serialize.S -o $out 2>/dev/null
-res=$?
-rm -f $out
-if [ $res -eq 0 ]; then
- CPPFLAGS="$CPPFLAGS -DHAVE_SERIALIZE_DIRECTIVE"
-fi
-
-echo $CPPFLAGS
diff --git a/arch/ia64/scripts/unwcheck.py b/arch/ia64/scripts/unwcheck.py
deleted file mode 100644
index 2bfd941..0000000
--- a/arch/ia64/scripts/unwcheck.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/python
-#
-# Usage: unwcheck.py FILE
-#
-# This script checks the unwind info of each function in file FILE
-# and verifies that the sum of the region-lengths matches the total
-# length of the function.
-#
-# Based on a shell/awk script originally written by Harish Patil,
-# which was converted to Perl by Matthew Chapman, which was converted
-# to Python by David Mosberger.
-#
-import os
-import re
-import sys
-
-if len(sys.argv) != 2:
- print "Usage: %s FILE" % sys.argv[0]
- sys.exit(2)
-
-readelf = os.getenv("READELF", "readelf")
-
-start_pattern = re.compile("<([^>]*)>: \[0x([0-9a-f]+)-0x([0-9a-f]+)\]")
-rlen_pattern = re.compile(".*rlen=([0-9]+)")
-
-def check_func (func, slots, rlen_sum):
- if slots != rlen_sum:
- global num_errors
- num_errors += 1
- if not func: func = "[%#x-%#x]" % (start, end)
- print "ERROR: %s: %lu slots, total region length = %lu" % (func, slots, rlen_sum)
- return
-
-num_funcs = 0
-num_errors = 0
-func = False
-slots = 0
-rlen_sum = 0
-for line in os.popen("%s -u %s" % (readelf, sys.argv[1])):
- m = start_pattern.match(line)
- if m:
- check_func(func, slots, rlen_sum)
-
- func = m.group(1)
- start = long(m.group(2), 16)
- end = long(m.group(3), 16)
- slots = 3 * (end - start) / 16
- rlen_sum = 0L
- num_funcs += 1
- else:
- m = rlen_pattern.match(line)
- if m:
- rlen_sum += long(m.group(1))
-check_func(func, slots, rlen_sum)
-
-if num_errors = 0:
- print "No errors detected in %u functions." % num_funcs
-else:
- if num_errors > 1:
- err="errors"
- else:
- err="error"
- print "%u %s detected in %u functions." % (num_errors, err, num_funcs)
- sys.exit(1)
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [RFC][PATCH] [ia64] Raise minimum binutils version and remove
2010-10-04 2:20 [RFC][PATCH] [ia64] Raise minimum binutils version and remove Ben Hutchings
@ 2010-10-04 18:52 ` Tony Luck
2010-10-10 21:00 ` Ben Hutchings
1 sibling, 0 replies; 3+ messages in thread
From: Tony Luck @ 2010-10-04 18:52 UTC (permalink / raw)
To: linux-ia64
On Sun, Oct 3, 2010 at 7:20 PM, Ben Hutchings <ben@decadent.org.uk> wrote:
> diff --git a/Documentation/Changes b/Documentation/Changes
> index 4fb88f1..23fc499 100644
> --- a/Documentation/Changes
> +++ b/Documentation/Changes
> @@ -30,7 +30,7 @@ isdn4k-utils.
>
> o Gnu C 3.2 # gcc --version
> o Gnu make 3.80 # make --version
> -o binutils 2.12 # ld -v
> +o binutils 2.12 (2.16 for ia64) # ld -v
> o util-linux 2.10o # fdformat --version
> o module-init-tools 0.9.10 # depmod -V
> o e2fsprogs 1.41.4 # e2fsck -V
Won't this file become a complete mess if each architecture starts
specifying its own version for each of the tools? Is it likely that
all the others will follow ia64's bold lead in moving past 2.12
for binutils?
Overall this patch looks to be a good idea (oldest binutils on any
of my systems is 2.17) ... so clearing out all the ancient tests
for long-fixed bugs is nice. But I worry about being the trend
setter here.
-Tony
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC][PATCH] [ia64] Raise minimum binutils version and remove
2010-10-04 2:20 [RFC][PATCH] [ia64] Raise minimum binutils version and remove Ben Hutchings
2010-10-04 18:52 ` Tony Luck
@ 2010-10-10 21:00 ` Ben Hutchings
1 sibling, 0 replies; 3+ messages in thread
From: Ben Hutchings @ 2010-10-10 21:00 UTC (permalink / raw)
To: linux-ia64
[-- Attachment #1: Type: text/plain, Size: 1355 bytes --]
On Mon, 2010-10-04 at 11:52 -0700, Tony Luck wrote:
> On Sun, Oct 3, 2010 at 7:20 PM, Ben Hutchings <ben@decadent.org.uk> wrote:
> > diff --git a/Documentation/Changes b/Documentation/Changes
> > index 4fb88f1..23fc499 100644
> > --- a/Documentation/Changes
> > +++ b/Documentation/Changes
> > @@ -30,7 +30,7 @@ isdn4k-utils.
> >
> > o Gnu C 3.2 # gcc --version
> > o Gnu make 3.80 # make --version
> > -o binutils 2.12 # ld -v
> > +o binutils 2.12 (2.16 for ia64) # ld -v
> > o util-linux 2.10o # fdformat --version
> > o module-init-tools 0.9.10 # depmod -V
> > o e2fsprogs 1.41.4 # e2fsck -V
>
> Won't this file become a complete mess if each architecture starts
> specifying its own version for each of the tools?
[...]
Maybe, though the only things likely to need per-architecture fixes or
features are gcc and binutils.
By the way, I did a little more research and found that the bug
unwcheck.py is checking for was in binutils 2.16, so the minimum would
actually have to be 2.17 (or a distro-fixed 2.16).
Ben.
--
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-10-10 21:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-04 2:20 [RFC][PATCH] [ia64] Raise minimum binutils version and remove Ben Hutchings
2010-10-04 18:52 ` Tony Luck
2010-10-10 21:00 ` Ben Hutchings
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox