+static unsigned AllocLabel (void (*UseSeg) ())
+/* Switch to a segment, define a local label and return it */
+{
+ unsigned Label;
+
+ /* Switch to the segment */
+ UseSeg ();
+
+ /* Define the variable label */
+ Label = GetLocalLabel ();
+ g_defdatalabel (Label);
+
+ /* Return the label */
+ return Label;
+}
+
+
+
+static unsigned AllocStorage (void (*UseSeg) (), unsigned Size)
+/* Reserve Size bytes of BSS storage prefixed by a local label. Return the
+ * label.
+ */
+{
+ /* Switch to the segment and define the label */
+ unsigned Label = AllocLabel (UseSeg);
+
+ /* Reserve space for the data */
+ g_res (Size);
+
+ /* Return the label */
+ return Label;
+}
+
+
+