mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-09-22 10:43:39 -04:00
ofmt: Implement null_segalign stubs
Set stubs for all targets Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This commit is contained in:
2
nasm.c
2
nasm.c
@@ -1241,6 +1241,8 @@ 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->segalign(location.segment, align);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
6
nasm.h
6
nasm.h
@@ -681,6 +681,12 @@ struct ofmt {
|
||||
*/
|
||||
int32_t (*section) (char *name, int pass, int *bits);
|
||||
|
||||
/*
|
||||
* This procedure is called to modify segment alignment,
|
||||
* there is a trick, the alignment can only increase
|
||||
*/
|
||||
void (*segalign)(int32_t seg, int value);
|
||||
|
||||
/*
|
||||
* This procedure is called to modify the segment base values
|
||||
* returned from the SEG operator. It is given a segment base
|
||||
|
@@ -49,3 +49,9 @@ int null_directive(enum directives directive, char *value, int pass)
|
||||
(void)pass;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void null_segalign(int32_t seg, int value)
|
||||
{
|
||||
(void)seg;
|
||||
(void)value;
|
||||
}
|
||||
|
@@ -924,6 +924,7 @@ struct ofmt of_aout = {
|
||||
aout_out,
|
||||
aout_deflabel,
|
||||
aout_section_names,
|
||||
null_segalign,
|
||||
aout_segbase,
|
||||
null_directive,
|
||||
aout_filename,
|
||||
@@ -946,6 +947,7 @@ struct ofmt of_aoutb = {
|
||||
aout_out,
|
||||
aout_deflabel,
|
||||
aout_section_names,
|
||||
null_segalign,
|
||||
aout_segbase,
|
||||
null_directive,
|
||||
aout_filename,
|
||||
|
@@ -638,6 +638,7 @@ struct ofmt of_as86 = {
|
||||
as86_out,
|
||||
as86_deflabel,
|
||||
as86_section_names,
|
||||
null_segalign,
|
||||
as86_segbase,
|
||||
null_directive,
|
||||
as86_filename,
|
||||
|
@@ -1672,6 +1672,7 @@ struct ofmt of_bin = {
|
||||
bin_out,
|
||||
bin_deflabel,
|
||||
bin_secname,
|
||||
null_segalign,
|
||||
bin_segbase,
|
||||
bin_directive,
|
||||
bin_filename,
|
||||
@@ -1690,6 +1691,7 @@ struct ofmt of_ith = {
|
||||
bin_out,
|
||||
bin_deflabel,
|
||||
bin_secname,
|
||||
null_segalign,
|
||||
bin_segbase,
|
||||
bin_directive,
|
||||
ith_filename,
|
||||
@@ -1708,6 +1710,7 @@ struct ofmt of_srec = {
|
||||
bin_out,
|
||||
bin_deflabel,
|
||||
bin_secname,
|
||||
null_segalign,
|
||||
bin_segbase,
|
||||
bin_directive,
|
||||
srec_filename,
|
||||
|
@@ -1012,6 +1012,7 @@ struct ofmt of_coff = {
|
||||
coff_out,
|
||||
coff_deflabel,
|
||||
coff_section_names,
|
||||
null_segalign,
|
||||
coff_segbase,
|
||||
coff_directives,
|
||||
coff_std_filename,
|
||||
@@ -1034,6 +1035,7 @@ struct ofmt of_win32 = {
|
||||
coff_out,
|
||||
coff_deflabel,
|
||||
coff_section_names,
|
||||
null_segalign,
|
||||
coff_segbase,
|
||||
coff_directives,
|
||||
coff_win32_filename,
|
||||
@@ -1056,6 +1058,7 @@ struct ofmt of_win64 = {
|
||||
coff_out,
|
||||
coff_deflabel,
|
||||
coff_section_names,
|
||||
null_segalign,
|
||||
coff_segbase,
|
||||
coff_directives,
|
||||
coff_win32_filename,
|
||||
|
@@ -166,6 +166,12 @@ static void dbg_out(int32_t segto, const void *data,
|
||||
}
|
||||
}
|
||||
|
||||
static void dbg_segalign(int32_t seg, int value)
|
||||
{
|
||||
fprintf(ofile, "set alignment (%d) for segment (%d)\n",
|
||||
seg, value);
|
||||
}
|
||||
|
||||
static int32_t dbg_segbase(int32_t segment)
|
||||
{
|
||||
return segment;
|
||||
@@ -259,6 +265,7 @@ struct ofmt of_dbg = {
|
||||
dbg_out,
|
||||
dbg_deflabel,
|
||||
dbg_section_names,
|
||||
dbg_segalign,
|
||||
dbg_segbase,
|
||||
dbg_directive,
|
||||
dbg_filename,
|
||||
|
@@ -1401,6 +1401,7 @@ struct ofmt of_elf32 = {
|
||||
elf_out,
|
||||
elf_deflabel,
|
||||
elf_section_names,
|
||||
null_segalign,
|
||||
elf_segbase,
|
||||
elf_directive,
|
||||
elf_filename,
|
||||
|
@@ -1501,6 +1501,7 @@ struct ofmt of_elf64 = {
|
||||
elf_out,
|
||||
elf_deflabel,
|
||||
elf_section_names,
|
||||
null_segalign,
|
||||
elf_segbase,
|
||||
elf_directive,
|
||||
elf_filename,
|
||||
|
@@ -1501,6 +1501,7 @@ struct ofmt of_ieee = {
|
||||
ieee_out,
|
||||
ieee_deflabel,
|
||||
ieee_segment,
|
||||
null_segalign,
|
||||
ieee_segbase,
|
||||
ieee_directive,
|
||||
ieee_filename,
|
||||
|
@@ -41,6 +41,7 @@ uint64_t realsize(enum out_type type, uint64_t size);
|
||||
/* Do-nothing versions of some output routines */
|
||||
int null_setinfo(enum geninfo type, char **string);
|
||||
int null_directive(enum directives directive, char *value, int pass);
|
||||
void null_segalign(int32_t seg, int value);
|
||||
|
||||
/* Do-nothing versions of all the debug routines */
|
||||
struct ofmt;
|
||||
|
@@ -1317,6 +1317,7 @@ struct ofmt of_macho32 = {
|
||||
macho_output,
|
||||
macho_symdef,
|
||||
macho_section,
|
||||
null_segalign,
|
||||
macho_segbase,
|
||||
null_directive,
|
||||
macho_filename,
|
||||
|
@@ -1488,6 +1488,7 @@ struct ofmt of_macho64 = {
|
||||
macho_output,
|
||||
macho_symdef,
|
||||
macho_section,
|
||||
null_segalign,
|
||||
macho_segbase,
|
||||
null_directive,
|
||||
macho_filename,
|
||||
|
@@ -2559,6 +2559,7 @@ struct ofmt of_obj = {
|
||||
obj_out,
|
||||
obj_deflabel,
|
||||
obj_segment,
|
||||
null_segalign,
|
||||
obj_segbase,
|
||||
obj_directive,
|
||||
obj_filename,
|
||||
|
@@ -788,6 +788,7 @@ struct ofmt of_rdf2 = {
|
||||
rdf2_out,
|
||||
rdf2_deflabel,
|
||||
rdf2_section_names,
|
||||
null_segalign,
|
||||
rdf2_segbase,
|
||||
rdf2_directive,
|
||||
rdf2_filename,
|
||||
|
Reference in New Issue
Block a user