add patch for binutils sh/fdpic bug 31619
This commit is contained in:
parent
6486b2b2a2
commit
d6a6d80eb2
|
@ -0,0 +1,33 @@
|
|||
--- binutils-2.33.1/bfd/elf32-sh.c.orig 2024-04-04 23:11:28.739136261 +0900
|
||||
+++ binutils-2.33.1/bfd/elf32-sh.c 2024-04-08 23:14:24.496915074 +0900
|
||||
@@ -61,7 +61,7 @@
|
||||
not. If the symbol is protected, we want the local address, but
|
||||
its function descriptor must be assigned by the dynamic linker. */
|
||||
#define SYMBOL_FUNCDESC_LOCAL(INFO, H) \
|
||||
- (SYMBOL_REFERENCES_LOCAL (INFO, H) \
|
||||
+ (!(H) || (H)->dynindx < 0 || (H)->forced_local \
|
||||
|| ! elf_hash_table (INFO)->dynamic_sections_created)
|
||||
|
||||
#define SH_PARTIAL32 TRUE
|
||||
@@ -4405,20 +4405,6 @@
|
||||
/* Undefined weak symbol which will not be dynamically
|
||||
resolved later; leave it at zero. */
|
||||
goto funcdesc_leave_zero;
|
||||
- else if (SYMBOL_CALLS_LOCAL (info, h)
|
||||
- && ! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
- {
|
||||
- /* If the symbol needs a non-local function descriptor
|
||||
- but binds locally (i.e., its visibility is
|
||||
- protected), emit a dynamic relocation decayed to
|
||||
- section+offset. This is an optimization; the dynamic
|
||||
- linker would resolve our function descriptor request
|
||||
- to our copy of the function anyway. */
|
||||
- dynindx = elf_section_data (h->root.u.def.section
|
||||
- ->output_section)->dynindx;
|
||||
- relocation += h->root.u.def.section->output_offset
|
||||
- + h->root.u.def.value;
|
||||
- }
|
||||
else if (! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
{
|
||||
/* If the symbol is dynamic and there will be dynamic
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
--- binutils-2.33.1/bfd/elf32-sh.c.orig 2024-04-04 23:11:28.739136261 +0900
|
||||
+++ binutils-2.33.1/bfd/elf32-sh.c 2024-04-08 23:14:24.496915074 +0900
|
||||
@@ -61,7 +61,7 @@
|
||||
not. If the symbol is protected, we want the local address, but
|
||||
its function descriptor must be assigned by the dynamic linker. */
|
||||
#define SYMBOL_FUNCDESC_LOCAL(INFO, H) \
|
||||
- (SYMBOL_REFERENCES_LOCAL (INFO, H) \
|
||||
+ (!(H) || (H)->dynindx < 0 || (H)->forced_local \
|
||||
|| ! elf_hash_table (INFO)->dynamic_sections_created)
|
||||
|
||||
#define SH_PARTIAL32 TRUE
|
||||
@@ -4405,20 +4405,6 @@
|
||||
/* Undefined weak symbol which will not be dynamically
|
||||
resolved later; leave it at zero. */
|
||||
goto funcdesc_leave_zero;
|
||||
- else if (SYMBOL_CALLS_LOCAL (info, h)
|
||||
- && ! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
- {
|
||||
- /* If the symbol needs a non-local function descriptor
|
||||
- but binds locally (i.e., its visibility is
|
||||
- protected), emit a dynamic relocation decayed to
|
||||
- section+offset. This is an optimization; the dynamic
|
||||
- linker would resolve our function descriptor request
|
||||
- to our copy of the function anyway. */
|
||||
- dynindx = elf_section_data (h->root.u.def.section
|
||||
- ->output_section)->dynindx;
|
||||
- relocation += h->root.u.def.section->output_offset
|
||||
- + h->root.u.def.value;
|
||||
- }
|
||||
else if (! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
{
|
||||
/* If the symbol is dynamic and there will be dynamic
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
--- binutils-2.33.1/bfd/elf32-sh.c.orig 2024-04-04 23:11:28.739136261 +0900
|
||||
+++ binutils-2.33.1/bfd/elf32-sh.c 2024-04-08 23:14:24.496915074 +0900
|
||||
@@ -61,7 +61,7 @@
|
||||
not. If the symbol is protected, we want the local address, but
|
||||
its function descriptor must be assigned by the dynamic linker. */
|
||||
#define SYMBOL_FUNCDESC_LOCAL(INFO, H) \
|
||||
- (SYMBOL_REFERENCES_LOCAL (INFO, H) \
|
||||
+ (!(H) || (H)->dynindx < 0 || (H)->forced_local \
|
||||
|| ! elf_hash_table (INFO)->dynamic_sections_created)
|
||||
|
||||
#define SH_PARTIAL32 TRUE
|
||||
@@ -4405,20 +4405,6 @@
|
||||
/* Undefined weak symbol which will not be dynamically
|
||||
resolved later; leave it at zero. */
|
||||
goto funcdesc_leave_zero;
|
||||
- else if (SYMBOL_CALLS_LOCAL (info, h)
|
||||
- && ! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
- {
|
||||
- /* If the symbol needs a non-local function descriptor
|
||||
- but binds locally (i.e., its visibility is
|
||||
- protected), emit a dynamic relocation decayed to
|
||||
- section+offset. This is an optimization; the dynamic
|
||||
- linker would resolve our function descriptor request
|
||||
- to our copy of the function anyway. */
|
||||
- dynindx = elf_section_data (h->root.u.def.section
|
||||
- ->output_section)->dynindx;
|
||||
- relocation += h->root.u.def.section->output_offset
|
||||
- + h->root.u.def.value;
|
||||
- }
|
||||
else if (! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
{
|
||||
/* If the symbol is dynamic and there will be dynamic
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
--- binutils-2.33.1/bfd/elf32-sh.c.orig 2024-04-04 23:11:28.739136261 +0900
|
||||
+++ binutils-2.33.1/bfd/elf32-sh.c 2024-04-08 23:14:24.496915074 +0900
|
||||
@@ -61,7 +61,7 @@
|
||||
not. If the symbol is protected, we want the local address, but
|
||||
its function descriptor must be assigned by the dynamic linker. */
|
||||
#define SYMBOL_FUNCDESC_LOCAL(INFO, H) \
|
||||
- (SYMBOL_REFERENCES_LOCAL (INFO, H) \
|
||||
+ (!(H) || (H)->dynindx < 0 || (H)->forced_local \
|
||||
|| ! elf_hash_table (INFO)->dynamic_sections_created)
|
||||
|
||||
#define SH_PARTIAL32 TRUE
|
||||
@@ -4405,20 +4405,6 @@
|
||||
/* Undefined weak symbol which will not be dynamically
|
||||
resolved later; leave it at zero. */
|
||||
goto funcdesc_leave_zero;
|
||||
- else if (SYMBOL_CALLS_LOCAL (info, h)
|
||||
- && ! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
- {
|
||||
- /* If the symbol needs a non-local function descriptor
|
||||
- but binds locally (i.e., its visibility is
|
||||
- protected), emit a dynamic relocation decayed to
|
||||
- section+offset. This is an optimization; the dynamic
|
||||
- linker would resolve our function descriptor request
|
||||
- to our copy of the function anyway. */
|
||||
- dynindx = elf_section_data (h->root.u.def.section
|
||||
- ->output_section)->dynindx;
|
||||
- relocation += h->root.u.def.section->output_offset
|
||||
- + h->root.u.def.value;
|
||||
- }
|
||||
else if (! SYMBOL_FUNCDESC_LOCAL (info, h))
|
||||
{
|
||||
/* If the symbol is dynamic and there will be dynamic
|
||||
|
Loading…
Reference in New Issue