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:
parent
6fc2b123af
commit
2c4a4d5810
2 changed files with 9 additions and 11 deletions
6
nasm.c
6
nasm.c
|
@ -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;
|
||||
|
|
14
nasmlib.c
14
nasmlib.c
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue