Hello,
in the PowerPC ELFv2 specification
https://members.openpowerfoundation.org/document/dl/576
we have
"3.4.2 Use of the Small Data Area
For a data item in the .sdata or .sbss sections, a compiler may generate
short-form one-instruction refer-
ences. In an executable file or shared library, such a reference is
relative to the address of the TOC base
symbol (which can be obtained from r2 if a TOC pointer is initialized).
A compiler that generates code using
the small data area should provide an option to select the maximum size
of objects placed in the small data
area, and a means of disabling any use of the small data area. When
generating code for ELF shared
libraries, the small data area should not be used for default-visibility
global objects. This is to satisfy ELF
shared-library symbol interposition rules. That is, an ordinary global
symbol in a shared library may be over-
ridden by a symbol of the same name defined in the executable or another
shared library. Supporting interpo-
sition when using TOC-pointer relative addressing would require text
relocations."
I tried to generate code using the small data area on a 64-bit PowerPC
GCC, but I was not successful. We have in the GCC sources
(gcc/config/rs6000/rs6000.c):
/* Return 1 for an operand in small memory on V.4/eabi. */
int
small_data_operand (rtx op ATTRIBUTE_UNUSED,
machine_mode mode ATTRIBUTE_UNUSED)
{
#if TARGET_ELF
rtx sym_ref;
if (rs6000_sdata == SDATA_NONE || rs6000_sdata == SDATA_DATA)
return 0;
if (DEFAULT_ABI != ABI_V4)
return 0;
So, it looks like the small data stuff is not support for ABI_ELFv2? Are
there main issues with the small data area using ELVv2 or is this simply
not implemented due to a lack of interested?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.