[Skiboot] Minimum binutils version to build skiboot

Gustavo Romero gromero at linux.vnet.ibm.com
Thu Jul 23 10:05:20 AEST 2020


Hi,

I'm getting the following error when building skiboot with
binutils 2.26.1 on Ubuntu 16.04.6 LTS:

[...]
	[AR]  libstb/built-in.a
asm/head.S: Assembler messages:
asm/head.S:235: Error: missing ')'
asm/head.S:235: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0xffffffffffff0000 and 0x000000000000ffff)
asm/head.S:235: Error: syntax error; found `U', expected `,'
asm/head.S:235: Error: junk at end of line: `ULL)@highest'
asm/head.S:235: Error: missing ')'
asm/head.S:235: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0x0000000000000000 and 0x000000000000ffff)
asm/head.S:235: Error: syntax error; found `U', expected `,'
asm/head.S:235: Error: junk at end of line: `ULL)@higher'
asm/head.S:235: Error: missing ')'
asm/head.S:235: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0x0000000000000000 and 0x000000000000ffff)
asm/head.S:235: Error: syntax error; found `U', expected `,'
asm/head.S:235: Error: junk at end of line: `ULL)@h'
asm/head.S:235: Error: missing ')'
asm/head.S:235: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0x0000000000000000 and 0x000000000000ffff)
asm/head.S:235: Error: syntax error; found `U', expected `,'
	[AR]  libc/built-in.a
asm/head.S:235: Error: junk at end of line: `ULL)@l'
asm/head.S:934: Error: missing ')'
asm/head.S:934: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0xffffffffffff0000 and 0x000000000000ffff)
asm/head.S:934: Error: syntax error; found `U', expected `,'
asm/head.S:934: Error: junk at end of line: `ULL)@highest'
asm/head.S:934: Error: missing ')'
asm/head.S:934: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0x0000000000000000 and 0x000000000000ffff)
asm/head.S:934: Error: syntax error; found `U', expected `,'
asm/head.S:934: Error: junk at end of line: `ULL)@higher'
asm/head.S:934: Error: missing ')'
asm/head.S:934: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0x0000000000000000 and 0x000000000000ffff)
asm/head.S:934: Error: syntax error; found `U', expected `,'
asm/head.S:934: Error: junk at end of line: `ULL)@h'
asm/head.S:934: Error: missing ')'
asm/head.S:934: Error: operand out of range (0x0b1ab1af00ba1234 is not between 0x0000000000000000 and 0x000000000000ffff)
asm/head.S:934: Error: syntax error; found `U', expected `,'
asm/head.S:934: Error: junk at end of line: `ULL)@l'
	[AS]  asm/dummy_map.o
	[CC]  skiboot.lds
/home/gromero/git/skiboot/Makefile.rules:52: recipe for target 'asm/head.o' failed
make: *** [asm/head.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes.  Stop.


This is because binutils <= 2.27 does not support ULL & friends suffixes
and asm/head.S is using ULL for STACK_INT_MAGIC, so if we remove the ULL
suffix skiboot builds ok with binutils 2.26.1:

diff --git a/include/stack.h b/include/stack.h
index 3e987ea..9aa688b 100644
--- a/include/stack.h
+++ b/include/stack.h
@@ -45,7 +45,7 @@
  #define STACK_WARNING_GAP      2048
  
  #define STACK_CHECK_GUARD_BASE 0xdeadf00dbaad300
-#define STACK_INT_MAGIC                0xb1ab1af00ba1234ULL
+#define STACK_INT_MAGIC                0xb1ab1af00ba1234


Since STACK_INT_MAGIc, by its turn, is actually used with @{l,h,higher,highest},
afaics it's not possible to simply change ULL and cast the value with
(unsigned long long). Nonetheless, I _think_ that for that case the ULL suffix
is not really necessary, just like it happens for STACK_CHECK_GUARD_BASE.

That said, I don't know what's the minimum binutils skiboot must currently
support, so actually it might be that I'm using a non supported binutils
version to build skiboot :)

Thoughts?


Cheers,
Gustavo


More information about the Skiboot mailing list