diff options
Diffstat (limited to 'debian/patches/pr90714.diff')
-rw-r--r-- | debian/patches/pr90714.diff | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/debian/patches/pr90714.diff b/debian/patches/pr90714.diff new file mode 100644 index 0000000..3d4a36f --- /dev/null +++ b/debian/patches/pr90714.diff @@ -0,0 +1,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 |