Commit 15c67e21 authored by Austin Clements's avatar Austin Clements

cmd/ld: set ELF ABI version for ppc64x

On ppc64, there are three ELF ABI versions an ELF file can request.
Previously, we used 0, which means "unspecified".  On our test
machines, this meant to use the default (v1 for big endian and v2 for
little endian), but apparently some systems can pick the wrong ABI if
neither is requested.  Leaving this as 0 also confuses libbfd, which
confuses gdb, objdump, etc.

Fix these problems by specifying ABI v1 for big endian and v2 for
little endian.

Change-Id: I4d3d5478f37f11baab3681a07daff3da55802322
Reviewed-on: https://go-review.googlesource.com/1800Reviewed-by: 's avatarMinux Ma <minux@golang.org>
parent 2fc29a83
...@@ -44,8 +44,12 @@ elfinit(void) ...@@ -44,8 +44,12 @@ elfinit(void)
switch(thechar) { switch(thechar) {
// 64-bit architectures // 64-bit architectures
case '6':
case '9': case '9':
if(ctxt->arch->endian == BigEndian)
hdr.flags = 1; /* Version 1 ABI */
else
hdr.flags = 2; /* Version 2 ABI */
case '6':
elf64 = 1; elf64 = 1;
hdr.phoff = ELF64HDRSIZE; /* Must be be ELF64HDRSIZE: first PHdr must follow ELF header */ hdr.phoff = ELF64HDRSIZE; /* Must be be ELF64HDRSIZE: first PHdr must follow ELF header */
hdr.shoff = ELF64HDRSIZE; /* Will move as we add PHeaders */ hdr.shoff = ELF64HDRSIZE; /* Will move as we add PHeaders */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment