Simplify handling of segments and segalign

Slightly simplify the handling of segment number allocation.
If we are in absolute space, never push a segalign down to the backend.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
H. Peter Anvin 2016-02-16 17:37:18 -08:00
parent 6fc2b123af
commit 2c4a4d5810
2 changed files with 9 additions and 11 deletions

6
nasm.c
View file

@ -343,8 +343,6 @@ int main(int argc, char **argv)
preproc = &nasmpp;
operating_mode = OP_NORMAL;
seg_init();
/* Define some macros dependent on the runtime, but not
on the command line. */
define_macros_early();
@ -1291,8 +1289,10 @@ static void assemble_file(char *fname, StrList **depend_ptr)
"segment alignment `%s' is not power of two",
value);
}
/* callee should be able to handle all details */
ofmt->sectalign(location.segment, align);
if (location.segment != NO_SEG)
ofmt->sectalign(location.segment, align);
}
}
break;

View file

@ -391,16 +391,14 @@ int64_t readstrnum(char *str, int length, bool *warn)
return charconst;
}
static int32_t next_seg;
void seg_init(void)
{
next_seg = 0;
}
int32_t seg_alloc(void)
{
return (next_seg += 2) - 2;
static int32_t next_seg = 0;
int32_t this_seg = next_seg;
next_seg += 2;
return this_seg;
}
#ifdef WORDS_LITTLEENDIAN