There are still a few packages that fail to build on Debian linux because we end up with branches that can't reach their target. It turns out that the default maximum stub group size in binutils is smaller than what we allow in gcc. This patch reduces the maximum offset in gcc to match that in binutils.
I also made the maximum offset for PIC and non-PIC code the same. While PIC long branches are three instructions versus two, the stubs for non-local calls are the same length. Tested on hppa-unknown-linux-gnu. Committed to trunk. Dave 2019-10-03 John David Anglin <dang...@gcc.gnu.org> * config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust. Index: config/pa/pa.h =================================================================== --- config/pa/pa.h (revision 276260) +++ config/pa/pa.h (working copy) @@ -1292,13 +1292,12 @@ #endif /* The maximum offset in bytes for a PA 1.X pc-relative call to the - head of the preceding stub table. The selected offsets have been - chosen so that approximately one call stub is allocated for every - 86.7 instructions. A long branch stub is two instructions when - not generating PIC code. For HP-UX and ELF targets, PIC stubs are - seven and four instructions, respectively. */ -#define MAX_PCREL17F_OFFSET \ - (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000) + head of the preceding stub table. A long branch stub is two or three + instructions for non-PIC and PIC, respectively. Import stubs are + seven and five instructions for HP-UX and ELF targets, respectively. + The default stub group size for ELF targets is 217856 bytes. + FIXME: We need an option to set the maximum offset. */ +#define MAX_PCREL17F_OFFSET (TARGET_HPUX ? 198164 : 217856) #define NEED_INDICATE_EXEC_STACK 0