Add support for SEGMENT_START.

This is a bit of an odd feature. It is normally used in

. = SEGMENT_START(seg, val);

In bfd it evaluates to val or to the value of the corresponding
-T<seg>-segment. Note that the -T<seg>-segment in bfd doesn't actually
change the segment address, just the value this evaluates too,
including in the default linker script.

In gold the -T<seg>-segment options do change the segment address and
seeing this expressions in linker scripts disables the options.

For new this just always evaluates the expression to val.

llvm-svn: 277014
diff --git a/lld/test/ELF/linkerscript/Inputs/segment-start.script b/lld/test/ELF/linkerscript/Inputs/segment-start.script
new file mode 100644
index 0000000..95933a2
--- /dev/null
+++ b/lld/test/ELF/linkerscript/Inputs/segment-start.script
@@ -0,0 +1,7 @@
+SECTIONS
+{
+  PROVIDE (foobar1 = SEGMENT_START("text-segment", 0x8001));
+  PROVIDE (foobar2 = SEGMENT_START("data-segment", 0x8002));
+  PROVIDE (foobar3 = SEGMENT_START("bss-segment", 0x8003));
+  PROVIDE (foobar4 = SEGMENT_START("abc-segment", 0x8004));
+}