summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2018-06-14 20:00:07 -0700
committerH. Peter Anvin <hpa@linux.intel.com>2018-06-14 20:00:07 -0700
commit46c839a03ddb07dd7266e9b826a24eafa242dfbf (patch)
tree2a01c9954c373c94761e2ab8973e10d23907b0e6
parentaf5f918a9235ec8a4ce72553141c06b9631fb550 (diff)
downloadnasm-46c839a03ddb07dd7266e9b826a24eafa242dfbf.tar.gz
labels: allocation of a segment number counts as a change
If we allocate a new segment number, that has to cause global_offset_changed to be incremented. Thus, we should not update lptr->defn.segment until that would ordinarily be done. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r--asm/labels.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/asm/labels.c b/asm/labels.c
index ccdedace..88edc9ed 100644
--- a/asm/labels.c
+++ b/asm/labels.c
@@ -424,11 +424,8 @@ void define_label(const char *label, int32_t segment,
nasm_error(ERR_WARNING, "label `%s' defined on pass two", label);
}
- if (!segment) {
- segment = lptr->defn.segment;
- if (!segment)
- segment = lptr->defn.segment = seg_alloc();
- }
+ if (!segment)
+ segment = lptr->defn.segment ? lptr->defn.segment : seg_alloc();
if (lptr->defn.defined || lptr->defn.type == LBL_BACKEND) {
/* We have seen this on at least one previous pass */