diff options
-rw-r--r-- | nasm.c | 6 | ||||
-rw-r--r-- | nasmlib.c | 14 |
2 files changed, 9 insertions, 11 deletions
@@ -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; @@ -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 |