On Thu, May 7, 2015 at 4:52 AM, Jan Beulich wrote: >>>> On 07.05.15 at 08:02, wrote: >> AFAICT gas will produce relocations for jumps to global labels in the >> same file. This doesn't seem directly harmful to me, except that, on >> x86, it forces five-byte jumps instead of two-byte jumps. >> >> This seems especially unfortunate, since even hidden and protected >> symbols have this problem. >> >> Given that many users don't want interposition support (especially the >> kernel and anyone using .hidden or .protected), it would be nice to >> have a command-line option to turn this off and probably also to turn >> it off by default for hidden and protected symbols. Can gas do this? > > I've been running with the below changes (taken off of a bigger set > of changes, so the line numbers may look a little odd) for the last > couple of years. I never tried to submit this change because so far > I couldn't find the time to check whether this would have any > unwanted side effects on cases I don't normally use. > This is the patch I checked in. Thanks. -- H.J. --- Branches to global non-weak symbols defined in the same segment with non-default visibility can be optimized the same way as branches to local symbols. gas/ * config/tc-i386.c (elf_symbol_resolved_in_segment_p): New. (md_estimate_size_before_relax): Use it. gas/testsuite/ * gas/i386/i386.exp: Run relax-3 and x86-64-relax-2. * gas/i386/relax-3.d: New file. * gas/i386/relax-3.s: Likewise. * gas/i386/x86-64-relax-2.d: Likewise.