https://sourceware.org/bugzilla/show_bug.cgi?id=18963

Alan Modra <amodra at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amodra at gmail dot com

--- Comment #3 from Alan Modra <amodra at gmail dot com> ---
Yes, Nick has it right, that code in new_rel_from_abs is the trigger for this
failure.  But note that the truly bogus code is in fold_binary as described by
this comment:
          /* Arithmetic operators, bitwise AND, bitwise OR and XOR
             keep the section of one of their operands only when the
             other operand is a plain number.  Losing the section when
             operating on two symbols, ie. a result of a plain number,
             is required for subtraction and XOR.  It's justifiable
             for the other operations on the grounds that adding,
             multiplying etc. two section relative values does not
             really make sense unless they are just treated as
             numbers.
             The same argument could be made for many expressions
             involving one symbol and a number.  For example,
             "1 << x" and "100 / x" probably should not be given the
             section of x.  The trouble is that if we fuss about such
             things the rules become complex and it is onerous to
             document ld expression evaluation.  */

Fixing fold_binary is probably too risky in terms of destabilising people's odd
little linker scripts. 

The new_rel_from_abs change came in here:
https://sourceware.org/ml/binutils/2012-06/msg00155.html  It would be a shame
to lose the overall functionality of that change.  Absolute symbols a really
not handled well in other parts of the toolchain.  For example, glibc ld.so on
many targets doesn't treat them as absolute..
So I think that besides Nick's patch we also need another pass over linker
script symbols, to give them a section relative value.  If nothing else, this
is going to be less work than all the ld testsuite updates needed with Nick's
current patch.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to