[RFC] Removing DefinedSynthetic

Rafael Avila de Espindola via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 22 09:43:12 PST 2017


I am looking at https://bugs.llvm.org/show_bug.cgi?id=32031 and there
are a couple of ways to interpret it.

One way is that we are just computing symbol values too early. When we
do it some output sections still don't have their address set and some
input sections still don't know what output section they will be in.

The other way to look at it is just that our representation of symbol
values in the linker script is wrong. I started experimenting with using
a ExprValue struct that is similar in idea to a MCValue. It is what Expr
returns and it contains a PointerUnion of an input or output section and
the offset. This allows us to avoid having to check the OutSec field
before it is set and solves the problem.

But that got me thinking, can we remove DefinedSynthetic completely?
With the addition of a few dummy input sections and potentially a couple
more conversions to SyntheticSection I think we can.

Can anyone think of a reason why this would not work?

Cheers,
Rafael


More information about the llvm-commits mailing list