Re: [RFA] OSF/1 - "next" over prologueless function call

Richard Henderson
2003-12-02T06:35:35Z

On Mon, Dec 01, 2003 at 08:26:46PM -0800, Joel Brobecker wrote:
> + if (pc == func_start)
> + return 1;
> +
> + if (pc == func_start + 8)
> + {
> + unsigned int inst;
> +
> + /* ldah $gp,n($t12) */
> + inst = alpha_read_insn (func_start);
> + if ((inst & 0xffff0000) != 0x27bb0000)
> + return 0;
> +
> + /* lda $gp,n($gp) */
> + inst = alpha_read_insn (func_start + 4);
> + if ((inst & 0xffff0000) != 0x23bd0000)
> + return 0;

Is there any chance we could get hold of the symbol associated with
this function start? On ELF detecting this condition can be
streamlined to

sym->st_other & STO_ALPHA_STD_GPLOAD == STO_ALPHA_STD_GPLOAD

or from bfd, elf_link_hash_entry.other, though I don't remember off
the top of my head how to get at the elf hash entry from asymbol.

And yes indeed, the gnu tools do this same optimization. Both at
compile time and link time.

r~