49 lines
1.8 KiB
Diff
49 lines
1.8 KiB
Diff
|
From 453f8e1e4918171bc12e4d03aab7ee8360dfcfef Mon Sep 17 00:00:00 2001
|
||
|
From: Sergio Durigan Junior <sergiodj@redhat.com>
|
||
|
Date: Mon, 21 Jan 2019 15:36:41 -0500
|
||
|
Subject: [PATCH] Fix GCC9 warning on elf32-arm.c:elf32_arm_final_link_relocate
|
||
|
|
||
|
Fedora Rawhide has just switched to GCC9, and now GDB doesn't compile
|
||
|
because of a BFD warning:
|
||
|
|
||
|
BUILDSTDERR: ../../bfd/elf32-arm.c: In function 'elf32_arm_final_link_relocate':
|
||
|
BUILDSTDERR: ../../bfd/elf32-arm.c:10907:10: error: absolute value function 'labs' given an argument of type 'bfd_signed_vma' {aka 'long long int'} but has parameter of type 'long int' which may cause truncation of value [-Werror=absolute-value]
|
||
|
BUILDSTDERR: 10907 | value = labs (relocation);
|
||
|
BUILDSTDERR: | ^~~~
|
||
|
|
||
|
You can take a look at the full build log here:
|
||
|
|
||
|
https://kojipkgs.fedoraproject.org//work/tasks/4828/32174828/build.log
|
||
|
|
||
|
The fix is (apparently) simple: instead of using 'labs', we should use
|
||
|
'llabs', since we're passing a 'bfd_signed_vma' to it, which is at
|
||
|
least a 'long long int', as far as I have checked. This is what this
|
||
|
patch does.
|
||
|
|
||
|
bfd/ChangeLog:
|
||
|
2019-01-25 Sergio Durigan Junior <sergiodj@redhat.com>
|
||
|
|
||
|
* elf32-arm.c (elf32_arm_final_link_relocate): Use 'llabs' instead
|
||
|
of 'labs' (and fix GCC warning).
|
||
|
---
|
||
|
bfd/ChangeLog | 5 +++++
|
||
|
bfd/elf32-arm.c | 2 +-
|
||
|
2 files changed, 6 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
|
||
|
index 53baea269b..28ee9d55a8 100644
|
||
|
--- a/bfd/elf32-arm.c
|
||
|
+++ b/bfd/elf32-arm.c
|
||
|
@@ -10904,7 +10904,7 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
|
||
|
|
||
|
/* PR 21523: Use an absolute value. The user of this reloc will
|
||
|
have already selected an ADD or SUB insn appropriately. */
|
||
|
- value = labs (relocation);
|
||
|
+ value = llabs (relocation);
|
||
|
|
||
|
if (value >= 0x1000)
|
||
|
return bfd_reloc_overflow;
|
||
|
--
|
||
|
2.21.0
|
||
|
|