freebsd-ports/devel/gdb/files/patch-bfd-elf64-alpha.c
Pawel Pekala 802fdfe8d7 - Add option to disable TUI
- Correct enabling of all targets, add patches to fix new
  clang build issues raised by this change
- Fix WWW: line

PR:		ports/176103
Submitted by:	Luca Pizzamiglio <luca.pizzamiglio@gmail.com> (maintainer)
2013-03-13 16:15:49 +00:00

63 lines
2 KiB
C

--- bfd/elf64-alpha.c.orig 2013-03-11 10:52:58.000000000 +0100
+++ bfd/elf64-alpha.c 2013-03-11 11:50:24.000000000 +0100
@@ -3585,9 +3585,9 @@
use_gottprel = FALSE;
new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : STN_UNDEF;
- switch (!dynamic && !info->link_info->shared)
- {
- case 1:
+ {
+ int skip_default = 0;
+ if (!dynamic && !info->link_info->shared)
{
bfd_vma tp_base;
bfd_signed_vma disp;
@@ -3605,7 +3605,7 @@
irel[0].r_offset = pos[0] - info->contents;
irel[0].r_info = ELF64_R_INFO (new_symndx, R_ALPHA_TPREL16);
irel[1].r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
- break;
+ skip_default = 1;
}
else if (disp >= -(bfd_signed_vma) 0x80000000
&& disp < (bfd_signed_vma) 0x7fff8000
@@ -3620,24 +3620,23 @@
irel[0].r_info = ELF64_R_INFO (new_symndx, R_ALPHA_TPRELHI);
irel[1].r_offset = pos[1] - info->contents;
irel[1].r_info = ELF64_R_INFO (new_symndx, R_ALPHA_TPRELLO);
- break;
+ skip_default = 1;
}
}
- /* FALLTHRU */
-
- default:
- use_gottprel = TRUE;
-
- insn = (OP_LDQ << 26) | (tlsgd_reg << 21) | (29 << 16);
- bfd_put_32 (info->abfd, (bfd_vma) insn, pos[0]);
- bfd_put_32 (info->abfd, (bfd_vma) INSN_UNOP, pos[1]);
-
- irel[0].r_offset = pos[0] - info->contents;
- irel[0].r_info = ELF64_R_INFO (new_symndx, R_ALPHA_GOTTPREL);
- irel[1].r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
- break;
- }
+ /* FALLTHRU (default) */
+ if (skip_default != 1 )
+ {
+ use_gottprel = TRUE;
+ insn = (OP_LDQ << 26) | (tlsgd_reg << 21) | (29 << 16);
+ bfd_put_32 (info->abfd, (bfd_vma) insn, pos[0]);
+ bfd_put_32 (info->abfd, (bfd_vma) INSN_UNOP, pos[1]);
+
+ irel[0].r_offset = pos[0] - info->contents;
+ irel[0].r_info = ELF64_R_INFO (new_symndx, R_ALPHA_GOTTPREL);
+ irel[1].r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
+ }
+ }
bfd_put_32 (info->abfd, (bfd_vma) INSN_RDUNIQ, pos[2]);
insn = INSN_ADDQ | (16 << 21) | (0 << 16) | (0 << 0);