{
int32_t type;
expr *e;
- int32_t label_seg, label_ofs;
+ int32_t label_seg;
+ int64_t label_ofs;
switch (i) {
case '-':
union label { /* actual label structures */
struct {
- int32_t segment, offset;
+ int32_t segment;
+ int64_t offset;
char *label, *special;
int is_global, is_norm;
} defn;
struct {
- int32_t movingon, dummy;
+ int32_t movingon;
+ int64_t dummy;
union label *next;
} admin;
};
return lfree++;
}
-bool lookup_label(char *label, int32_t *segment, int32_t *offset)
+bool lookup_label(char *label, int32_t *segment, int64_t *offset)
{
union label *lptr;
return (lptr && (lptr->defn.is_global & EXTERN_BIT));
}
-void redefine_label(char *label, int32_t segment, int32_t offset, char *special,
+void redefine_label(char *label, int32_t segment, int64_t offset, char *special,
bool is_norm, bool isextrn, struct ofmt *ofmt,
efunc error)
{
/* if (pass0 == 1) */
}
-void define_label(char *label, int32_t segment, int32_t offset, char *special,
+void define_label(char *label, int32_t segment, int64_t offset, char *special,
bool is_norm, bool isextrn, struct ofmt *ofmt, efunc error)
{
union label *lptr;
extern char lprefix[PREFIX_MAX];
extern char lpostfix[PREFIX_MAX];
-bool lookup_label(char *label, int32_t *segment, int32_t *offset);
+bool lookup_label(char *label, int32_t *segment, int64_t *offset);
bool is_extern(char *label);
-void define_label(char *label, int32_t segment, int32_t offset, char *special,
+void define_label(char *label, int32_t segment, int64_t offset, char *special,
bool is_norm, bool isextrn, struct ofmt *ofmt,
efunc error);
-void redefine_label(char *label, int32_t segment, int32_t offset, char *special,
+void redefine_label(char *label, int32_t segment, int64_t offset, char *special,
bool is_norm, bool isextrn, struct ofmt *ofmt,
efunc error);
void define_common(char *label, int32_t segment, int32_t size, char *special,
/*
* A label-lookup function should look like this.
*/
-typedef bool (*lfunc) (char *label, int32_t *segment, int32_t *offset);
+typedef bool (*lfunc) (char *label, int32_t *segment, int64_t *offset);
/*
* And a label-definition function like this. The boolean parameter
* should affect the local-label system), or something odder like
* an EQU or a segment-base symbol, which shouldn't.
*/
-typedef void (*ldfunc) (char *label, int32_t segment, int32_t offset,
+typedef void (*ldfunc) (char *label, int32_t segment, int64_t offset,
char *special, bool is_norm, bool isextrn,
struct ofmt * ofmt, efunc error);
* been an EXTERN, a COMMON or a GLOBAL. The distinction should
* be obvious to the output format from the other parameters.
*/
- void (*symdef) (char *name, int32_t segment, int32_t offset,
+ void (*symdef) (char *name, int32_t segment, int64_t offset,
int is_global, char *special);
/*
* would be called before the output format version.
*/
- void (*debug_deflabel) (char *name, int32_t segment, int32_t offset,
+ void (*debug_deflabel) (char *name, int32_t segment, int64_t offset,
int is_global, char *special);
/*
* debug_directive - called whenever a DEBUG directive other than 'LINE'
(void)linenumber;
(void)segto;
}
-void null_debug_deflabel(char *name, int32_t segment, int32_t offset,
+void null_debug_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
(void)name;
return NO_SEG;
}
-static void aout_deflabel(char *name, int32_t segment, int32_t offset,
+static void aout_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
int pos = strslen + 4;
return pos;
}
-static void as86_deflabel(char *name, int32_t segment, int32_t offset,
+static void as86_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
struct Symbol *sym;
}
/* Display symbols information. */
if (map_control & MAP_SYMBOLS) {
- int32_t segment, offset;
+ int32_t segment;
+ int64_t offset;
fprintf(rf, "-- Symbols ");
for (h = 68; h; h--)
fprintf(rf, "\n\nValue Name\n");
for (l = no_seg_labels; l; l = l->next) {
lookup_label(l->name, &segment, &offset);
- fprintf(rf, "%08"PRIX32" %s\n", offset, l->name);
+ fprintf(rf, "%08"PRIX64" %s\n", offset, l->name);
}
fprintf(rf, "\n\n");
}
}
}
-static void bin_deflabel(char *name, int32_t segment, int32_t offset,
+static void bin_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
(void)segment; /* Don't warn that this parameter is unused */
return sects[i]->index;
}
-static void coff_deflabel(char *name, int32_t segment, int32_t offset,
+static void coff_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
int pos = strslen + 4;
*/
memset(filename, 0, 18); /* useful zeroed buffer */
- for (i = 0; i < nsects; i++) {
+ for (i = 0; i < (uint32_t) nsects; i++) {
coff_symbol(sects[i]->name, 0L, 0L, i + 1, 3, 1);
fwriteint32_t(sects[i]->len, coffp);
fwriteint16_t(sects[i]->nrelocs, coffp);
void stabs32_init(struct ofmt *, void *, FILE *, efunc);
void stabs32_linenum(const char *filename, int32_t linenumber, int32_t);
-void stabs32_deflabel(char *, int32_t, int32_t, int, char *);
+void stabs32_deflabel(char *, int32_t, int64_t, int, char *);
void stabs32_directive(const char *, const char *);
void stabs32_typevalue(int32_t);
void stabs32_output(int, void *);
return sects[i]->index;
}
-static void elf_deflabel(char *name, int32_t segment, int32_t offset,
+static void elf_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
int pos = strslen;
currentline = linenumber;
}
-void stabs32_deflabel(char *name, int32_t segment, int32_t offset, int is_global,
+void stabs32_deflabel(char *name, int32_t segment, int64_t offset, int is_global,
char *special)
{
(void)name;
void stabs64_init(struct ofmt *, void *, FILE *, efunc);
void stabs64_linenum(const char *filename, int32_t linenumber, int32_t);
-void stabs64_deflabel(char *, int32_t, int32_t, int, char *);
+void stabs64_deflabel(char *, int32_t, int64_t, int, char *);
void stabs64_directive(const char *, const char *);
void stabs64_typevalue(int32_t);
void stabs64_output(int, void *);
return sects[i]->index;
}
-static void elf_deflabel(char *name, int32_t segment, int32_t offset,
+static void elf_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
int pos = strslen;
currentline = linenumber;
}
-void stabs64_deflabel(char *name, int32_t segment, int32_t offset, int is_global,
+void stabs64_deflabel(char *name, int32_t segment, int64_t offset, int is_global,
char *special)
{
(void)name;
* callback for labels
*/
static void ieee_deflabel(char *name, int32_t segment,
- int32_t offset, int is_global, char *special)
+ int64_t offset, int is_global, char *special)
{
/*
* We have three cases:
}
static void dbgls_deflabel(char *name, int32_t segment,
- int32_t offset, int is_global, char *special)
+ int64_t offset, int is_global, char *special)
{
struct ieeeSection *seg;
return NO_SEG;
}
-static void macho_symdef(char *name, int32_t section, int32_t offset,
+static void macho_symdef(char *name, int32_t section, int64_t offset,
int is_global, char *special)
{
struct symbol *sym;
}
static void obj_deflabel(char *name, int32_t segment,
- int32_t offset, int is_global, char *special)
+ int64_t offset, int is_global, char *special)
{
/*
* We have three cases:
}
static void dbgbi_deflabel(char *name, int32_t segment,
- int32_t offset, int is_global, char *special)
+ int64_t offset, int is_global, char *special)
{
struct Segment *seg;
/*
* Handle export, import and common records.
*/
-static void rdf2_deflabel(char *name, int32_t segment, int32_t offset,
+static void rdf2_deflabel(char *name, int32_t segment, int64_t offset,
int is_global, char *special)
{
struct ExportRec r;