binutils: backport patch
this should fix chromium link on i686
This commit is contained in:
parent
8eb09b4216
commit
c5fe2888ef
2 changed files with 61 additions and 1 deletions
|
@ -0,0 +1,60 @@
|
||||||
|
From 1767e3f3bd6d460491f8c8d032a7fea88d5ec8ff Mon Sep 17 00:00:00 2001
|
||||||
|
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||||
|
Date: Mon, 16 Nov 2020 06:37:53 -0800
|
||||||
|
Subject: [PATCH] elf: Set rel_from_abs to 1 for __ehdr_start
|
||||||
|
|
||||||
|
bfdlink.h has
|
||||||
|
|
||||||
|
/* Symbol will be converted from absolute to section-relative. Set for
|
||||||
|
symbols defined by a script from "dot" (also SEGMENT_START or ORIGIN)
|
||||||
|
outside of an output section statement. */
|
||||||
|
unsigned int rel_from_abs : 1;
|
||||||
|
|
||||||
|
linker.c has
|
||||||
|
|
||||||
|
.{* Return TRUE if the symbol described by a linker hash entry H
|
||||||
|
. is going to be absolute. Linker-script defined symbols can be
|
||||||
|
. converted from absolute to section-relative ones late in the
|
||||||
|
. link. Use this macro to correctly determine whether the symbol
|
||||||
|
. will actually end up absolute in output. *}
|
||||||
|
.#define bfd_is_abs_symbol(H) \
|
||||||
|
. (((H)->type == bfd_link_hash_defined \
|
||||||
|
. || (H)->type == bfd_link_hash_defweak) \
|
||||||
|
. && bfd_is_abs_section ((H)->u.def.section) \
|
||||||
|
. && !(H)->rel_from_abs)
|
||||||
|
.
|
||||||
|
|
||||||
|
Set rel_from_abs to 1 for __ehdr_start which will be converted from
|
||||||
|
absolute to section-relative in assign_file_positions_for_load_sections.
|
||||||
|
|
||||||
|
PR ld/26869
|
||||||
|
* ldelf.c (ldelf_before_allocation): Set rel_from_abs to 1 for
|
||||||
|
__ehdr_start.
|
||||||
|
* testsuite/ld-i386/i386.exp: Run pr26869.
|
||||||
|
* testsuite/ld-i386/pr26869.d: New file.
|
||||||
|
* testsuite/ld-i386/pr26869.s: Likewise.
|
||||||
|
|
||||||
|
(cherry picked from commit cbd5b99cce073273f668b154d4514e8e7e7ccc51)
|
||||||
|
---
|
||||||
|
ld/ChangeLog | 9 +++++++++
|
||||||
|
ld/ldelf.c | 2 ++
|
||||||
|
ld/testsuite/ld-i386/i386.exp | 1 +
|
||||||
|
ld/testsuite/ld-i386/pr26869.d | 14 ++++++++++++++
|
||||||
|
ld/testsuite/ld-i386/pr26869.s | 3 +++
|
||||||
|
5 files changed, 29 insertions(+)
|
||||||
|
create mode 100644 ld/testsuite/ld-i386/pr26869.d
|
||||||
|
create mode 100644 ld/testsuite/ld-i386/pr26869.s
|
||||||
|
|
||||||
|
diff --git a/ld/ldelf.c b/ld/ldelf.c
|
||||||
|
index bada3ade2d7..831d032fe56 100644
|
||||||
|
--- a/ld/ldelf.c
|
||||||
|
+++ b/ld/ldelf.c
|
||||||
|
@@ -1589,6 +1589,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
|
||||||
|
(char *) &ehdr_start->u + sizeof ehdr_start->u.def.next,
|
||||||
|
sizeof ehdr_start_save_u);
|
||||||
|
ehdr_start->type = bfd_link_hash_defined;
|
||||||
|
+ /* It will be converted to section-relative later. */
|
||||||
|
+ ehdr_start->rel_from_abs = 1;
|
||||||
|
ehdr_start->u.def.section = bfd_abs_section_ptr;
|
||||||
|
ehdr_start->u.def.value = 0;
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'binutils'
|
# Template file for 'binutils'
|
||||||
pkgname=binutils
|
pkgname=binutils
|
||||||
version=2.35.1
|
version=2.35.1
|
||||||
revision=1
|
revision=2
|
||||||
bootstrap=yes
|
bootstrap=yes
|
||||||
short_desc="GNU binary utilities"
|
short_desc="GNU binary utilities"
|
||||||
maintainer="Enno Boland <gottox@voidlinux.org>"
|
maintainer="Enno Boland <gottox@voidlinux.org>"
|
||||||
|
|
Loading…
Reference in a new issue