On 2015-02-13, at 12:08 PM, Richard Henderson wrote: > On 02/13/2015 05:22 AM, John David Anglin wrote: >> + /* Reload sometimes tries to put const data symbolic operands in >> + readonly memory. The HP SOM linker doesn't allow symbolic data >> + in readonly memory. */ >> + if (TARGET_SOM >> + && !function_label_operand (x, VOIDmode) >> + && symbolic_operand (x, VOIDmode)) >> + return true; > > You probably want to remove the SOM test. Even if ELF can represent this, it > will lead to DT_TEXTREL and relocations against the read-only memory.
Unfortunately, this creates new problems. When there is a constant offset that won't fit in 14 bits, we ICE. I think this could be improved to 21 bits but it's tough to load an operand with a larger offset with just one register, particularly when generating PIC code. I need to research what happens on SOM with large offsets. Possibly the constant can somehow be forced into the data section where the relocations aren't a problem? Dave -- John David Anglin dave.ang...@bell.net