summaryrefslogtreecommitdiff
path: root/debian/patches/pr90714.diff
blob: 3d4a36f5d1df9d8ac0a65c7210771cbe03af275a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# DP: ia64: relocation truncated to fit: GPREL22

The symbol is exposed to C by dso_handle.h, and since it's a single
8-byte pointer, it is just within the threshold for being in the small
data (or bss) section, so code accessing it will use GP-relative
addressing. Therefore we must put it in .sdata/.sbss in case our other
data sections grow too big and we overflow the 22-bit relocation.

libgcc/
	* config/ia64/crtbegin.S (__dso_handle): Put in .sdata/.sbss
	rather than .data/.bss so it can be accessed via gp-relative
	addressing.
---
 libgcc/config/ia64/crtbegin.S | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/src/libgcc/config/ia64/crtbegin.S
+++ b/src/libgcc/config/ia64/crtbegin.S
@@ -45,11 +45,11 @@ dtor_ptr:
 	.type __dso_handle,@object
 	.size __dso_handle,8
 #ifdef SHARED
-	.section .data
+	.section .sdata
 __dso_handle:
 	data8	__dso_handle
 #else
-	.section .bss
+	.section .sbss
 	.align 8
 __dso_handle:
 	.skip	8