Date: Fri, 23 Aug 2002 22:01:33 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/kern link_elf.c Message-ID: <200208240501.g7O51X64027154@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
marcel 2002/08/23 22:01:33 PDT
Modified files:
sys/kern link_elf.c
Log:
Work around a GCC optimization bug on ia64: In link_elf_symbol_values(),
a pointer to a symbol is given and we have to find the containing symbol
table. We do this by bounds checking. For some strange reason (ie I
haven't found the root cause) the first test succeeded for said symbol,
implying that the symbol came from the .dynsym table. In reality however
the symbol actually resided in the .symtab table. Needless to say that
all that was returned was junk.
The upper bounds check was: (symptr - baseptr) < symtab_size
This has been rewritten to: symptr < (baseptr + symtab_size)
As a side-effect, slightly more optimal (and still correct :-) code can
be generated on ia64.
Revision Changes Path
1.58 +2 -2 src/sys/kern/link_elf.c
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208240501.g7O51X64027154>
