]> Shamusworld >> Repos - rmac/blobdiff - object.c
EOY minor update.
[rmac] / object.c
index 29fd8f3ce0d672e42757eed92131ccfd47b6461d..0828eff69dad2c5dad86d5702268dafb42e356d8 100644 (file)
--- a/object.c
+++ b/object.c
@@ -1,7 +1,7 @@
 //
 // RMAC - Reboot's Macro Assembler for all Atari computers
 // OBJECT.C - Writing Object Files
-// Copyright (C) 199x Landon Dyer, 2011-2019 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
 // Source utilised with the kind permission of Landon Dyer
 //
@@ -124,7 +124,8 @@ uint8_t * AddSymEntry(register uint8_t * buf, SYM * sym, int globflag)
                w |= AL_EXTERN | AL_GLOBAL;     // Common symbol
                w &= ~AL_BSS;           // They're not BSS in Alcyon object files
        }
-       else if (w1 & DEFINED)
+
+       if (w1 & DEFINED)
        {
                if (globflag)           // Export the symbol
                        w |= AL_GLOBAL;
@@ -218,12 +219,7 @@ uint8_t * AddELFSymEntry(uint8_t * buf, SYM * sym, int globflag)
 
        register WORD w1 = sym->sattr;
 
-       if (w1 & COMMON)
-       {
-               //w |= AL_EXTERN | AL_GLOBAL;   // common symbol
-               //w &= ~AL_BSS;         // they're not BSS in Alcyon object files
-       }
-       else if (w1 & DEFINED)
+       if (w1 & DEFINED)
        {
                if (globflag)           // Export the symbol
                        st_info |= 16;   //STB_GLOBAL (1<<4)
@@ -314,14 +310,13 @@ uint32_t DepositELFSymbol(uint8_t * ptr, uint32_t name, uint32_t addr, uint32_t
 //
 int WriteObject(int fd)
 {
-       LONG t;                                 // Scratch long
        LONG tds;                               // TEXT & DATA segment size
        int i;                                  // Temporary int
        CHUNK * cp;                             // Chunk (for gather)
        uint8_t * buf;                  // Scratch area
        uint8_t * p;                    // Temporary ptr
        LONG trsize, drsize;    // Size of relocations
-       long unused;                    // For supressing 'write' warnings
+       uint32_t unused;                // For supressing 'write' warnings
 
        if (verb_flag)
        {
@@ -484,6 +479,9 @@ int WriteObject(int fd)
                        sy_assign(buf + HDRSIZE + tds, AddSymEntry);
                        chptr = buf + 0x0E;                     // Point to symbol table size entry
                        D_long(symsize);
+
+                       if (verb_flag)
+                               printf("Symbol table: %d bytes\n", symsize);
                }
 
                // Write out the header + text & data + symbol table (if any)
@@ -810,7 +808,7 @@ for(int j=0; j<i; j++)
                        WriteP56();
 
                // Write all the things |o/
-               ssize_t unused = write(fd, buf, chptr - buf);
+               unused = write(fd, buf, chptr - buf);
 
                if (buf)
                        free(buf);