mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-02-11 17:10:45 +08:00
Merge branch 'nasm-2.09.xx'
Conflicts: nasm.h version Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This commit is contained in:
commit
a4f98b3aab
@ -19,6 +19,15 @@ since 2007.
|
||||
To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
|
||||
|
||||
|
||||
\S{cl-2.09.08} Version 2.09.08
|
||||
|
||||
\b Fix \c{__OUTPUT_FORMAT__} assignment when output driver alias
|
||||
is used. For example when \c{-f elf} is used \c{__OUTPUT_FORMAT__}
|
||||
must be set to \c{elf}, if \c{-f elf32} is used \c{__OUTPUT_FORMAT__}
|
||||
must be assigned accordingly, i.e. to \c{elf32}. The rule applies to
|
||||
all output driver aliases. See \k{ofmtm}.
|
||||
|
||||
|
||||
\S{cl-2.09.07} Version 2.09.07
|
||||
|
||||
\b Fix attempts to close same file several times
|
||||
|
@ -1,6 +1,6 @@
|
||||
\# --------------------------------------------------------------------------
|
||||
\#
|
||||
\# Copyright 1996-2010 The NASM Authors - All Rights Reserved
|
||||
\# Copyright 1996-2011 The NASM Authors - All Rights Reserved
|
||||
\# See the file AUTHORS included with the NASM distribution for
|
||||
\# the specific copyright holders.
|
||||
\#
|
||||
@ -35,7 +35,7 @@
|
||||
\#
|
||||
\M{category}{Programming}
|
||||
\M{title}{NASM - The Netwide Assembler}
|
||||
\M{year}{1996-2010}
|
||||
\M{year}{1996-2011}
|
||||
\M{author}{The NASM Development Team}
|
||||
\M{copyright_tail}{-- All Rights Reserved}
|
||||
\M{license}{This document is redistributable under the license given in the file "LICENSE" distributed in the NASM archive.}
|
||||
@ -334,7 +334,7 @@ distribution archive, for the license conditions under which you may
|
||||
use NASM. NASM is now under the so-called 2-clause BSD license, also
|
||||
known as the simplified BSD license.
|
||||
|
||||
Copyright 1996-2010 the NASM Authors - All rights reserved.
|
||||
Copyright 1996-2011 the NASM Authors - All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
|
12
nasm.c
12
nasm.c
@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 1996-2010 The NASM Authors - All Rights Reserved
|
||||
* Copyright 1996-2011 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
*
|
||||
@ -98,6 +98,7 @@ static char errname[FILENAME_MAX];
|
||||
static int globallineno; /* for forward-reference tracking */
|
||||
/* static int pass = 0; */
|
||||
struct ofmt *ofmt = &OF_DEFAULT;
|
||||
struct ofmt_alias *ofmt_alias = NULL;
|
||||
const struct dfmt *dfmt;
|
||||
|
||||
static FILE *error_file; /* Where to write error messages */
|
||||
@ -268,8 +269,13 @@ static void define_macros_late(void)
|
||||
{
|
||||
char temp[128];
|
||||
|
||||
/*
|
||||
* In case if output format is defined by alias
|
||||
* we have to put shortname of the alias itself here
|
||||
* otherwise ABI backward compatibility gets broken.
|
||||
*/
|
||||
snprintf(temp, sizeof(temp), "__OUTPUT_FORMAT__=%s",
|
||||
ofmt->shortname);
|
||||
ofmt_alias ? ofmt_alias->shortname : ofmt->shortname);
|
||||
pp_pre_define(temp);
|
||||
}
|
||||
|
||||
@ -652,7 +658,7 @@ static bool process_arg(char *p, char *q)
|
||||
break;
|
||||
|
||||
case 'f': /* output format */
|
||||
ofmt = ofmt_find(param);
|
||||
ofmt = ofmt_find(param, &ofmt_alias);
|
||||
if (!ofmt) {
|
||||
nasm_error(ERR_FATAL | ERR_NOFILE | ERR_USAGE,
|
||||
"unrecognised output format `%s' - "
|
||||
|
11
nasm.h
11
nasm.h
@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 1996-2010 The NASM Authors - All Rights Reserved
|
||||
* Copyright 1996-2011 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
*
|
||||
@ -754,6 +754,15 @@ struct ofmt {
|
||||
void (*cleanup) (int debuginfo);
|
||||
};
|
||||
|
||||
/*
|
||||
* Output format driver alias
|
||||
*/
|
||||
struct ofmt_alias {
|
||||
const char *shortname;
|
||||
const char *fullname;
|
||||
struct ofmt *ofmt;
|
||||
};
|
||||
|
||||
extern struct ofmt *ofmt;
|
||||
extern FILE *ofile;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
|
||||
* Copyright 1996-2011 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
*
|
||||
@ -47,11 +47,13 @@
|
||||
#define BUILD_DRIVERS_ARRAY
|
||||
#include "output/outform.h"
|
||||
|
||||
struct ofmt *ofmt_find(char *name)
|
||||
struct ofmt *ofmt_find(char *name, struct ofmt_alias **ofmt_alias)
|
||||
{
|
||||
struct ofmt **ofp, *of;
|
||||
unsigned int i;
|
||||
|
||||
*ofmt_alias = NULL;
|
||||
|
||||
/* primary targets first */
|
||||
for (ofp = drivers; (of = *ofp); ofp++) {
|
||||
if (!nasm_stricmp(name, of->shortname))
|
||||
@ -61,8 +63,10 @@ struct ofmt *ofmt_find(char *name)
|
||||
/* lets walk thru aliases then */
|
||||
for (i = 0; i < ARRAY_SIZE(ofmt_aliases); i++) {
|
||||
if (ofmt_aliases[i].shortname &&
|
||||
!nasm_stricmp(name, ofmt_aliases[i].shortname))
|
||||
!nasm_stricmp(name, ofmt_aliases[i].shortname)) {
|
||||
*ofmt_alias = &ofmt_aliases[i];
|
||||
return ofmt_aliases[i].ofmt;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
|
||||
* Copyright 1996-2011 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
*
|
||||
@ -330,11 +330,7 @@ static struct ofmt *drivers[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
static struct ofmt_alias {
|
||||
const char *shortname;
|
||||
const char *fullname;
|
||||
struct ofmt *ofmt;
|
||||
} ofmt_aliases[] = {
|
||||
static struct ofmt_alias ofmt_aliases[] = {
|
||||
#ifdef OF_ELF32
|
||||
{
|
||||
"elf",
|
||||
@ -361,7 +357,7 @@ static struct ofmt_alias {
|
||||
|
||||
#endif /* BUILD_DRIVERS_ARRAY */
|
||||
|
||||
struct ofmt *ofmt_find(char *);
|
||||
struct ofmt *ofmt_find(char *name, struct ofmt_alias **ofmt_alias);
|
||||
struct dfmt *dfmt_find(struct ofmt *, char *);
|
||||
void ofmt_list(struct ofmt *, FILE *);
|
||||
void dfmt_list(struct ofmt *ofmt, FILE * fp);
|
||||
|
Loading…
Reference in New Issue
Block a user